Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать

Глава 17. Работа со сводными таблицами

549

'Добавление шкал данных в последнюю колонку PT. ColumnGrand = F alse

 

PT. DataBodyRange. C olum ns( 3 ) . F o rm a tC o n d itio n s . _

 

 

AddDatabar

 

 

 

W ith p t . DataBodyRange. Colum ns( 3 ) . F o rm a tC o n d itio n s (1)

 

. B a rF illT y p e = x lD a ta B a rF illS o lid

 

 

. M in P o in t.M o d ify

n e w typ e : = xlC o n d itio n V a lu e N u m b e r,

new value:=0

 

.M a x P o in t.M o d ify

n ew typ e : = xlC on ditio nV alu eN um b er,

n e w v a lu e := l

End W ith

 

 

End

I f

 

 

Next

Col

 

 

Row = Row + 10

 

 

Next

i

 

 

'Замена чисел описательным текстом

W ith R a n g e ("A :A ,F :F ")

.R eplace

"1 ",

"Решительно

не согласен"

.R eplace

"2 ",

"He согласен"

.R eplace

"3 ",

"Колеблюсь"

 

.R eplace

"4 ",

"Согласен"

 

.R eplace

"5 ",

"Полностью

согласен"

End W ith

End Sub

Обратите внимание на то, что все сводные таблицы были созданы из единственного объекта P ivotC ache.

Сводные таблицы создаются с помощью вложенных циклов. Счетчик цикла Col из­ меняется от 1 до 6 с помощью параметра Step. Для второго столбца сводных таблиц немного изменяется характер обработки. Выполняются следующие действия:

отображается величина (в виде процента от значения в столбце);

не отображаются окончательные итоги для строк;

используется числовой формат;

отображаются цветовые шкалы, с помощью которых реализуется условное форма­ тирование.

Переменная Row отслеживает начальную строку в каждой сводной таблице. Завер­ шающая операция заключается в замене числовых категорий в столбцах А и F текстом. Например, вместо единицы подставляется текст “Полностью согласен”.

Создание обратной сводной таблицы

Сводная таблица представляет собой результат суммирования данных в обычной таб­ лице. А как быть в случае, если у вас имеется итоговая таблица, на основе которой нужно воссоздать исходную таблицу? Соответствующий пример приводится на рис. 17.8. Диа­ пазон ячеек B2:F14 представляет собой итоговую таблицу — упрощенный вариант свод­ ной таблицы. В столбцах 1:К находится состоящая из 48 строк таблица, созданная на ос­ нове итоговой таблицы. В этой таблице каждая строка содержит точку данных, а первые два столбца включают описание этой точки.

В Excel не существует прямого способа преобразования итоговой таблицы в обычную, но эту работу может выполнить макрос VBA. После его создания я разработал диалоговое окно UserForm , показанное на рис. 17.9. В нем определяются входной и выходной диапа­ зоны, а также имеется опция преобразования выходного диапазона в таблицу.

Глава 17. Работа со сводными таблицами

551

Этой процедуре передаются следующие три аргумента.

S um m aryTable . Объект Range, который представляет итоговую таблицу.

O u tp u t Range. Объект Range, представляющий верхнюю левую ячейку выход­

ного диапазона.

c b C re a te T a b le . Флажок (объект C heckbox) в окне U serF orm .

Эта процедура работает с итоговой таблицей любого размера. Количество строк данных в выходной таблице можно подсчитать по формуле ( г - 1 ) * ( с - 1 ), где переменные г и с представляют собой количество строк и столбцов в итоговой таблице соответственно.

Ниже приведен код процедуры R e v e rs e P iv o t .

Sub R everseP ivot(S um m aryTable

As

Range,

_

OutputRange As

Range, C re ateT a ble As

Boolean)

Dim

r As Long,

с As

Long

 

 

 

Dim

OutRow As

Long,

O utCol

As

Long

 

'Преобразование диапазона OutRow = 2

A p p lic a tio n . S creenU pdating

=

F alse

 

 

 

O utputR ange. Range( " A l: C3")

= A r r a y ( "С толбец", "Столбец2", _

 

 

 

 

 

 

 

"СтолбецЗ")

 

For

г =

2 To SummaryTable. Rows. Count

 

 

 

For с = 2 To SummaryTable. Colum ns. Count

1)

 

O utputR ange. C ells(O utR ow ,

1)

=

SummaryTable. C e lls ( r ,

 

O utputR ange. C ells(O utR ow ,

2)

=

SummaryTable. C e lls (1,

c)

 

O utputR ange. C ells(O utR ow ,

3)

=

SummaryTable. C e lls ( r ,

c)

 

OutRow = OutRow + 1

 

 

 

 

 

 

 

N ext

с

 

 

 

 

 

 

Next r

таблицу?

 

 

 

 

 

 

' Создать

 

 

 

 

 

 

I f

C re ateT a ble Then _

 

 

 

 

 

 

 

A c tiv e S h e e t. L is tO b je c ts .A d d

xlS rcR ange, _

 

 

O utputR ange. C u rre n tR e g io n ,

,

xlY e s

 

 

End Sub

Описанная процедура достаточно проста. Код выполняет циклический обход строк и столбцов во входном диапазоне, а затем записывает данные в выходной диапазон, кото­ рый всегда состоит из трех столбцов. Переменная OutRow отслеживает текущую строку в выходном диапазоне. Если пользователь устанавливает флажок, выходной диапазон преоб­ разуется в таблицу. При этом используется метод Add из коллекции L is tO b j e c ts .

Глава

Управление

диаграммами

Вэтой главе...

Кратко о диаграммах

Создание внедренной диаграммы

Размещение диаграммы на листе диаграммы

Активизация диаграммы с помощью кода VBA

Перемещение диаграммы

Деактивизация диаграммы

Определение активности диаграммы

Удаление объектов из коллекции ChartOb j e c t s или C harts

Циклический просмотр диаграмм

Изменение размеров и выравнивание диаграмм

Экспорт диаграммы

Изменение применяемых в диаграмме данных

Отображение подписей для данных на диаграмме

Отображение диаграммы в пользовательском диалоговом окне

События диаграмм

Тонкости создания диаграмм

Анимирование диаграмм

Создание интерактивной диаграммы без написания макросов

Спарклайны

Данная глава посвящена созданию в Excel самых различных диаграмм.