powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сумма (или другая формула) выделенных ячеек
22 сообщений из 22, страница 1 из 1
Сумма (или другая формула) выделенных ячеек
    #34571158
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В правом нижнем углу окна Эксель есть окно, в котором высвечивается сумма ячеек выделенного диапазона. Но нельзя ее скопировать Ctrl+С. :(
Подскажите, есть ли надстройка, которая бы позволяла копирвать эту сумму (или рез-тат других функций). Например панель в низу окна Эксель.
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #34572462
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пишите свой обработчик Selection_Change и выводите результат в application.statusbar
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #34572551
Granata005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не думаю что это хороший вариант... (там не только сумма) ...

а разве нельзя найти значение используя CommandBars ?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сумма (или другая формула) выделенных ячеек
    #35411488
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такое попробовал сделать. Удобно.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub Сумма_выделенных_ячеек_копирование_в_буфер()
'Время = Timer
Set mycell = Selection
    For Each mycell In mycell.Cells
    If IsNumeric(mycell) = True Then
       iSum = iSum + mycell
    End If
Next
'Подключи Microsoft Forms 2.0 Object Library
Set MyData = New DataObject
   MyData.SetText iSum
   MyData.PutInClipboard
'ВсеВремя = Timer - Время
'MsgBox ВсеВремя
End Sub
Лучше, конечно, не привзывать к кнопке или сочетанию клавиш, а запускать его при всяком выделении ячеек любой книги. Но тут мы столкнемся со следующей проблемой: при выделении большого кол-ва ячеек этот код будет сильно тормозить. Например при выделении одного столбца время работы составляет 1 сек. Соответственно при выделении всего листа время составляет 256 сек.

Т.к. мы знаем время работы макроса на одной ячейке (в конкретных условиях), мы можем проверить количество выделенных ячеек и если их будет больше чем 10 000 (в этом случае время пересчета будет составлять 1/65 356*10 000 = 0,28 с) и не включать макрос.
Вопрос: как можно быстро узнать количество выделенных не смежных ячеек?

С другой стороны, можно ли сделать такое (думаю, что это более оптимальный вариант)?:
Код работает, но по истечении 0,25 сек., не доходя до конца кода, происходит выход из процедуры
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35412590
MX - ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей06Вот такое попробовал сделать. Удобно.
[src vba]Sub Сумма_выделенных_ячеек_копирование_в_буфер()
'Время = Timer
Set mycell = Selection
For Each mycell In mycell.Cells
If IsNumeric(mycell) = True Then
iSum = iSum + mycell
End If
Next



Так и делаем
но предварительно перекидывыем в двумерный массив для скорости
затем
считаем по массиву все подряд а не только цифровые форматы

если под и справа от выделенного есть пустые ячейки то в них
пишем суммы по столбам и строкам
но это только если в одной из клеток есть знак ++
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35416559
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Sub Сумма_выделенных_ячеек_копирование_в_буфер()
Dim mycell As Range
Dim Адрес As String
Dim kol As Long
Dim iSum As Double
Dim MyData As Object

Время = Timer
Set mycell = Selection
 Адрес = Selection.Address(ReferenceStyle:=xlR1C1, RowAbsolute:=True)

If InStr(Адрес, ":") =  0  Then Exit Sub ' выход если выделена одна ячейка (столбец, строка)
    For Each mycell In mycell.Cells
    kol = kol +  1 
    Всевремя = Timer - Время
    If Всевремя >  0 . 25  Then Exit Sub ' Ограничение по времени работы кода
    If kol >  65600  Then Exit Sub ' Ограничение по кол-ву ячеек участвующих в подсчете
        If IsNumeric(mycell) = True Then
           iSum = iSum + mycell
        End If
    Next
'Подключи Microsoft Forms 2.0 Object Library
Set MyData = New DataObject
   MyData.SetText iSum
   MyData.PutInClipboard
Всевремя = Timer - Время
'MsgBox Всевремя

End Sub
Вот такое получилось.
Буду пробовать работать - если не надоест то, что будет постоянно отключать скопированное.
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35420356
Taranaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маахонькая идейка:

В модуле объявляем переменную и рисуем функцию:

Код: plaintext
1.
2.
3.
4.
5.
Public qq As Currency

Public Function msum()
msum = qq
End Function

В событиях листа пишем:

Код: plaintext
1.
2.
3.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
qq = (Evaluate("sum(" & Target.Address & ")"))
Cells( 1 ,  1 ).Formula = "=mSUM()" 'здесь задаем ячеку, в которой нужно показывать результат вычисления (сейчас - A1)
End Sub
Получаем удовольствие ;)

Или сразу:
Код: plaintext
1.
2.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Cells( 1 ,  1 ) = (Evaluate("sum(" & Target.Address & ")"))
End Sub
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35422094
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaranagaЗамечательно. Спасибо.
И считает очень быстро: на пересчет полностью заполненого листа уходит меньше 1 сек. И циклов нет. Единственное ограничение которое я нашел, то это невозможность складывать более 30 ячеек - аргументов.
Добавил скобки:
Код: plaintext
Cells( 1 ,  1 ) = (Evaluate("sum((" & Target.Address & "))"))
Стал считать 50 ячеек в первой строке . Наверное ему длины "формулы" не хватает.
Наверняка в Экселе 2007 такой проблемы не будет.
Еще раз спасибо.
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35422490
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей06 TaranagaЗамечательно. Спасибо.
И считает очень быстро: на пересчет полностью заполненого листа уходит меньше 1 сек. И циклов нет. Единственное ограничение которое я нашел, то это невозможность складывать более 30 ячеек - аргументов.
Добавил скобки:
Код: plaintext
Cells( 1 ,  1 ) = (Evaluate("sum((" & Target.Address & "))"))
Стал считать 50 ячеек в первой строке . Наверное ему длины "формулы" не хватает.
Наверняка в Экселе 2007 такой проблемы не будет.
Еще раз спасибо.

Используй Target.Address(0, 0) и будет помещаться больше ячеек.

В Экселе 2003 макс длина формулы - 1024 знака
В Экселе 2007 макс длина формулы - 8192 знака
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35422697
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Используй Target.Address(0, 0) и будет помещаться больше ячеек.
Ага.
Спасибо.
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35422773
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) Сергей06 TaranagaЗамечательно. Спасибо.
И считает очень быстро: на пересчет полностью заполненого листа уходит меньше 1 сек. И циклов нет. Единственное ограничение которое я нашел, то это невозможность складывать более 30 ячеек - аргументов.
Добавил скобки:
Код: plaintext
Cells( 1 ,  1 ) = (Evaluate("sum((" & Target.Address & "))"))
Стал считать 50 ячеек в первой строке . Наверное ему длины "формулы" не хватает.
Наверняка в Экселе 2007 такой проблемы не будет.
Еще раз спасибо.

Используй Target.Address(0, 0) и будет помещаться больше ячеек.

В Экселе 2003 макс длина формулы - 1024 знака
В Экселе 2007 макс длина формулы - 8192 знака

Попутную информацию выложил, а главное забыл сказать: дело не в максимальной длине формулы, а в максимальной длине текстового параметра для Evaluate(). А это, к сожалению, все еще на уровне Эксель 4.0, т.е. 256 знаков.
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35422887
Taranaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Попутную информацию выложил, а главное забыл сказать: дело не в максимальной длине формулы, а в максимальной длине текстового параметра для Evaluate(). А это, к сожалению, все еще на уровне Эксель 4.0, т.е. 256 знаков.
:) Тогда можно нарисовать рекурсивную функцию, которая будет пилить диапазоны на куски чуть меньше 256 знаков и скармливать их Evaluate()...
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35422971
Taranaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отставить.
Не пашет.
Рубится уже на получении Target.Address(0,0) - больше 256 символов не возвращает :(
Получается будет работать только штука от ALEX:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set mycell = Selection
For Each mycell In mycell.Cells
    If IsNumeric(mycell) = True Then
        iSum = iSum + mycell
    End If
Next
Cells( 1 ,  1 ) = iSum
End Sub
...
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35423088
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, это варварство! Попробуй так:

Код: plaintext
Cells( 1 , 1 ) = Application.Sum(Target)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35424422
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Не, это варварство! Попробуй так:

Код: plaintext
Cells( 1 , 1 ) = Application.Sum(Target)

KL
[MVP - Microsoft Excel]
KL, спасибо, все действительно получилось!
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35427422
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Не, это варварство! Попробуй так:

Код: plaintext
Cells( 1 , 1 ) = Application.Sum(Target)

KL
[MVP - Microsoft Excel]

Кроме Суммы, будет полезным для практического применения, искать Минимальное и Максимальное число в выделении, размещая их ну скажем в ячейках A2, A3...

Код: plaintext
1.
2.
Cells( 2 , 1 ) = Application.Min(Target)
Cells( 3 , 1 ) = Application.Max(Target)

А как найти, например - 10 минимальных и 10 максимальных?
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #35427492
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dan-KА как найти, например - 10 минимальных и 10 максимальных?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    Dim msg As String
    Dim i As Long
    With Application
        For i =  1  To .Min( 10 , .Count(Target))
            msg = msg & "Min " & i & ": " & .Small(Target, i) & Chr( 13 )
        Next i
        MsgBox msg
    End With

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    Dim msg As String
    Dim i As Long
    With Application
        For i =  1  To .Min( 10 , .Count(Target))
            msg = msg & "Max " & i & ": " & .Large(Target, i) & Chr( 13 )
        Next i
        MsgBox msg
    End With
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сумма (или другая формула) выделенных ячеек
    #36871892
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Пользуюсь этими макросами и очень доволен.

Но сегодня возник такой вопрос:
Каким образом мне скопировать данные не в буфер обмена, а в буфер обмена офиса?
Ну, чтобы можно было скопировать до 24 значений (Офис 2003) и после вставлять выбирая в окне буфера обмена офиса...
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #36874404
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня никто не понял?
Может уточнить?
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #36894950
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей06Меня никто не понял?
Может уточнить?Да нет, всё понятно, но возможно обычными средствами никак.
Во всяком случае запись макросов ничего не даёт.
Можно теоретически написать свой обработчик копирования данных в буфер, тогда там можно будет не 23 копирования делать, а сколько захочется.
Самый простой способ не менять текущий обработчик копирования, а просто сделать свой макрос, который привязать на какую-нибудь не занятую комбинацию клавиш и копировать данные в матрицу.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сумма (или другая формула) выделенных ячеек
    #38850152
Антон93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно наитупейший вопрос?
При выделении нужного диапозона exel перестал выводить сумму,т.к некоторые ячейки имеют текстовый формат,а изменение формата не спасает,помогает только переустановка Officа.
...
Рейтинг: 0 / 0
Сумма (или другая формула) выделенных ячеек
    #38850156
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон93имеют текстовый формат,а изменение формата не спасаеткакое-то противоречие. После изменения формата они продолжают иметь текстовый формат? Может быть надо не изменение формата, а преобразование в число? Опять же, причем тут переустановка офиса? На другом компе тот же файл работает?
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сумма (или другая формула) выделенных ячеек
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]