Страницы: 1
RSS
Итог умной таблицы передать в переменную
 
Есть умная таблица Таблица1. В первом столбце выведено итоговое значение Максимум, во втором столбце итоговое значение Количество.
Эти итоговые значения я передаю переменным:

Код
A = Sheets("Лист1").ListObjects("Таблица1").TotalsRowRange(1) ' Максимум
B = Sheets("Лист1").ListObjects("Таблица1").TotalsRowRange(2) ' Количество


Но это работает только когда итоговые значение выбраны в самой умной таблице.
Можно ли Итоговые значения указать в VBA, чтобы их НЕ выводить в таблице???

Смысл в том, что мне надо снять несколько итоговых значений с одного столбца, а так их приходится плодить.
Изменено: tchack - 23.06.2022 09:53:52
 
Цитата
tchack: это работает только когда итоговые значение выбраны в самой умной таблице
если я правильно понимаю, то нельзя получить итог из строки, которой нет (то есть при отключенных итогах).
Так что просто берёте нужную функцию и передаёте в неё данные столбца:
Код
A = WorksheetFunction.Sum(Sheets("Лист1").ListObjects("Таблица1").ListColumns(3).DataBodyRange)
Справка: The VBA Guide To ListObject Excel Tables

Цитата
tchack: Можно ли Итоговые значения указать в VBA, чтобы их выводить в таблице???
я не понял, что вы имеете в виду и как это связано с вопросом темы Итог умной таблицы передать в переменную, ответ на который я дал выше…
Изменено: Jack Famous - 23.06.2022 09:25:56
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
я не понял, что вы имеете в виду и как это связано с вопросом темы Итог умной таблицы передать в переменную, ответ на который я дал выше…

Пропустил НЕ)))
 
Цитата
Jack Famous написал:
Так что просто берёте нужную функцию и передаёте в неё данные столбца:

Это я знаю (Про Sum), а мне нужно МАКСИМУМ (максимальное значение в столбце) и КОЛИЧЕСТВО (количество строк).
 
RowsCount = Sheets("Лист1").ListObjects("Таблица1").ListRows.Count
Maxima = WorksheetFunction.Max(Sheets("Лист1").ListObjects("Таблица1").ListColumns(3).DataBodyRange)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
RowsCount = Sheets("Лист1").ListObjects("Таблица1").ListRows.CountMaxima = WorksheetFunction.Max(Sheets("Лист1").ListObjects("Таблица1").ListColumns(3).DataBodyRange)

Ааа, вот оно что. Спасибо.
 
Цитата
tchack написал:
.ListRows.CountMaxima
Обалденно получилось! Тут поллитрой и не пахнет, минимум 4.  :D
 
Цитата
написал:
Ааа, вот оно что
На всякий случай лучше применять Application.Subtotal - чтобы уж максимально приблизиться к итогам, которые выдает умная таблица. Или хотя бы учитывать тот факт, что СУММ, МАКС и иже с ними при отфильтрованной таблице будут выдавать сумму и максимум по ВСЕЙ таблице, а ПРОМЕЖУТОЧНЫЕ.ИТОГИ(Subtotal) - только по отфильтрованным:
Код
WorksheetFunction.Subtotal(4, Sheets("Лист1").ListObjects("Таблица1").ListColumns(3).DataBodyRange)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
RAN: Тут поллитрой и не пахнет, минимум 4
не понял, в чём прикол - вроде всё верно показал  :)

Цитата
Дмитрий(The_Prist) Щербаков: ПРОМЕЖУТОЧНЫЕ.ИТОГИ(Subtotal) - только по отфильтрованным
это надо учитывать, конечно  :idea:
Изменено: Jack Famous - 23.06.2022 19:15:15
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх