Шаг 38.
VBA в MSExcel.
Методы объекта Range, использующие команды Excel. Метод Subtotal
На этом шаге мы рассмотрим параметры этого метода и пример использования.
Метод Subtotal добавляет промежуточные итоги в список данных, основываясь на изменениях в определенных полях данных. Промежуточные
итоги позволяют обобщить данные. Метод Subtotal автоматически вставляет строки с промежуточными итогами, в которые введены формулы
для подсчета итогов. Необходимо, чтобы до активизации этого метода данные были правильно отсортированы. В противном случае этот метод может
привести к неверному выводу промежуточных итогов. Вручную метод Subtotal вызывается командой Данные | Итоги (Data | Subtotal).
Синтаксис:
Объект.Subtotal(GroupBy, Function, TotalList, Replace, _
PageBreaks, SummaryBelowData)
Аргументы:
Таблица 1. Аргументы метода Subtotal
Аргумент |
Назначение |
Объект |
Диапазон, для которого подводятся промежуточные итоги |
GroupBy |
Номер поля, по которому вычисляются промежуточные итоги |
Function |
Определяет функцию, по которой производится подсчет промежуточных итогов. Допустимые значения:
- xlAverage (среднее);
- xlCount (количество значений);
- xlCountNums (количество чисел);
- xlMax (максимум);
- xlMin (минимум);
- xlProduct (произведение);
- xlStDev (несмещенное отклонение);
- xlStDevp (смещенное отклонение);
- xlSum (сумма);
- xlVar (несмещенная дисперсия);
- xlVarP (смещенная дисперсия).
|
TotalList |
Массив целых чисел с номерами полей, по которым вычисляются промежуточные итоги |
Replace |
Допустимые значения: True (существующие промежуточные итоги будут замещены) и False (в противном случае) |
PageBreaks |
Допустимые значения: True (после каждой группы будет вставлено по символу разрыва страницы) и False (в противном случае) |
SummaryBelowData |
Определяет местоположение для вывода промежуточных итогов. Допустимые значения:
- xlSummaryAbove (промежуточные итоги будут выведены над данными) и
- xlSummaryBelow (промежуточные итоги будут выведены под данными)
|
Основным методом, связанным с Subtotal, является метод RemoveSubtotal, удаляющий промежуточные итоги с рабочего листа.
Метод RemoveSubtotal применяется к объекту Range.
Приведем соответствие между аргументами метода Subtotal и подведением промежуточных итогов на рабочем листе вручную при помощи
команды Данные | Итоги (Data | Subtotal) на примере подсчета продаж компьютеров по месяцам и нахождения средних
объемов продаж (рисунок 1).
Рис.1. Отчет о продажах компьютеров
- Выделим ячейки списка, в данном случае диапазон A1:C16. Выберем команду Данные | Итоги (Data | Subtotal).
На экране отобразится диалоговое окно Промежуточные итоги (Subtotal) (рисунок 2).
Рис.2. Диалоговое окно Промежуточные итоги
- В диалоговом окне Промежуточные итоги (Subtotal):
- Раскрывающийся список При каждом изменении в (Ateach change) устанавливает, по какому столбцу группируются
данные. В данном случае выберем Компьютер.
- Раскрывающийся список Операция (Use function) устанавливает операцию, выполняемую над данными. Выберем Сумма (Sum).
- Список Добавить итоги по (Add subtotal to) устанавливает данные, которые участвуют в расчетах. В данном случае выберем Количество.
- Флажок Заменить текущие итоги (Replace current subtotals) определяет, надо ли заменить старые промежуточные итоги на вновь созданные. Сбросим этот флажок.
- Флажок Конец страницы между группами (Page break between groups) определяет, надо ли вставлять символ конца страницы после каждой группы, для которой подводятся промежуточные итоги. Сбросим этот флажок.
- Флажок Итоги под данными (Summary below data) определяет расположение промежуточных итогов под или над данными, по которым подводятся итоги. Расположим их под данными и поэтому установим флажок Итоги под данными (Summary below data).
- Нажмем кнопку ОК в диалоговом окне Промежуточные итоги (Subtotal), что приведет к созданию промежуточных
итогов на рабочем листе по выделенному диапазону данных (рисунок 3).
Рис.3. Результат выполнения команды Промежуточные итоги
На VBA тот же результат достигается применением следующих инструкций:
Range("Al:C16").Select
Selection. Subtotal GroupBy:=l, Function:=xlSum, _
TotalList:=Array (3) , Replace:=False, PageBreaks:=False, _
SuramaryBelowData:=True
- Добавим показатель средней реализации компьютеров по месяцам к уже найденным объемам их реализации. С этой целью выделим ячейки
списка с данными и уже подведенными ранее итогами, в данном случае диапазон A1:С20. Выберем команду Данные | Итоги
(Data | Subtotal). На экране отобразится диалоговое окно Промежуточные итоги (Subtotal). В этом диалоговом окне:
- В раскрывающемся списке При каждом изменении в (At each change) выберем Компьютер.
- В раскрывающемся списке Операция (Use function) выберем Среднее (Average).
- В списке Добавить итоги по (Add subtotal) установим флажок Количество.
- Сбросим флажок Заменить текущие итоги (Replace current subtotals).
- Сбросим флажок Конец страницы между группами (Page break between groups).
- Установим флажок Итоги под данными (Summary below data).
- Нажмем кнопку OK в диалоговом окне Промежуточные итоги (Subtotal), что приведет к добавлению
показателя средней реализации компьютеров по месяцам к уже существующим промежуточным итогам на рабочем листе (рисунок 4).
Рис.4. Результат добавления показателя средней реализации компьютеров по месяцам
На VBA тот же результат достигается применением следующих инструкций:
Range ("A1:C20").Select
Selection. Subtotal GroupBy:=l, Function:=xlAverage, _
TotalList:=Array (3) , Replace:=False, PageBreaks:=False, _
SummaryBelowData:=True
- Вместе с промежуточными итогами метод Subtotal создает структуру, которая позволяет управлять отображением детализации таблицы.
Управляющими элементами структуры являются кнопки, отображаемые на левой стороне рабочего листа с номерами уровней иерархии, и кнопки,
помеченные знаками "+" и "-". Нажатие на кнопку "+" или "-" позволяет отобразить или скрыть детализацию данного
элемента структуры, а на кнопки с номером уровня — детализацию целого уровня. Отобразим, например, только промежуточные итоги без их
детализации. Для этого надо нажать сначала кнопку 2, а затем 3 (рисунок 5).
Рис.5. Вывод промежуточных итогов без детализации
На VBA тот же результат достигается применением следующих инструкций:
ActiveSheet.Outline.ShowLevels RowLevels:=2
ActiveSheet.Outline.ShowLevels RowLevels:=3
Здесь свойство Outline рабочего листа возвращает объект Outline (Структура), а свойство ShowLevels объекта
Outline устанавливает отображаемый уровень детализации.
- Для удаления промежуточных итогов следует выделить данные с этими итогами, выполнив команду Данные | Итоги
(Data | Subtotal) и нажать кнопку Убрать все (Remove All) в появившемся диалоговом окне
Промежуточные итоги (Subtotal). На VBA тот же результат достигается применением следующих инструкций:
Range ("A1:C24").Select
Selection.RemoveSubtotal
Со следующего шага мы начнем рассматривать сценарии.
Предыдущий шаг
Содержание
Следующий шаг