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

544

Часть V. Профессиональные методы программирования

П р и м еч а н и е

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

Код сводной таблицы

Ниже приводится код, генерирующий сводную таблицу.

Sub

C re a te P iv o tT a b le ()

 

 

 

Dim

PTcache As PivotC ache

 

 

 

Dim

PT As

P iv o tT a b le

 

 

 

A p p lic a tio n .S c re e n U p d a tin g

=

F alse

1

Удаление

листа сводной таблицы (при е го наличии)

 

On

E r ro r

Resume Next

 

 

 

A p p lic a tio n .D is p la y A le r ts

= F alse

 

S h e e ts ( "СвводнаяТаблица") .D e le te

 

On

E rro r

GoTo 0

 

 

 

1

Выделение

кэш -пам яти для сводной таблицы

 

Set

PTcache = A ctive W o rkb o o k . P ivo tC a ch e s . C re a te ( _

 

 

SourceType: = xlD atab ase ,

_

 

 

 

SourceD ata: =Range( " A l " ) . C u rre n tR e g io n .A d d re ss)

1

Добавление нового

р аб очего

листа

 

W orksheets.Add

 

 

 

 

ActiveS heet.N am e

= "СводнаяТаблица"

 

A c tiv e W in d o w .D is p la y G rid lin e s

= F alse

'

Создание

сводной

таблицы

на

основе данных из кэш -пам яти

S et PT = A c tiv e S h e e t. P iv o tT a b le s .A d d ( _

P ivo tC a ch e : =PTcache, _

T a b le D e s tin a tio n : =Range(" A l" ) , _

TableName:= " СводнаяТаблицаПлан")

W ith PT

'Добавление полей

 

. P iv o tF ie ld s ( " К а т е го р и я " ) .O r ie n ta tio n

= x lP a g e F ie ld

 

. P iv o tF ie ld s ( "П одразд елени е") . O r ie n ta tio n

= x lP a g e F ie ld

 

. P iv o tF ie ld s ( "О тдел" ) . O r ie n ta tio n

=

x lR o w F ie ld

 

. P iv o tF ie ld s ( "М есяц") . O r ie n ta tio n

=

x lC o lu m n F ie ld

 

. P iv o tF ie ld s ( "П лан") . O r ie n ta tio n

=

x lD a ta F ie ld

 

. P iv o tF ie ld s ( "Ф а кт") . O r ie n ta tio n

=

x lD a ta F ie ld

 

. D a ta P iv o tF ie ld .O r ie n ta tio n

=

 

 

 

 

x lR o w F ie ld

1

Добавление вычисляемого поля,

определяющего отклонение

 

. C a lc u la te d F ie ld s .Add "О ткл онение",

"=П лан -Ф акт"

 

. P iv o tF ie ld s ( "О ткл он ен ие") . O r ie n ta tio n

=

x lD a ta F ie ld

'

Определение числового формата

 

 

 

 

 

 

. DataBodyRange.NumberFormat

=

"0 ,0 0 0 "

 

 

к

'Применение стиля

 

.T a b le S ty le 2 = "P ivo tS tyle M e d iu m 2 "

'

Сокрытие заго л о в ко в полей

. D is p la y F ie ld C a p tio n s = F alse

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

Изменение заглавий

 

. P iv o tF ie ld s ( "Сумма

по полю

. P iv o tF ie ld s ( "Сумма

по полю

. P iv o tF ie ld s ( "Сумма

по полю

End W ith

 

!nd Sub

 

545

План") . C a p tio n

=

"

План"

Ф а кт") . C a p tio n

=

"

Факт"

Отклонение" ) . C a p tio n = 11Отклонение"

1ринцип работы сводной таблицы

Процедура C r e a te P iv o tT a b le начинает свою работу с удаления листа С во дна я - Таблица, если он существует. После этого создается объект P iv o tC a c h e , добавляется ювый лист С воднаяТаблица и создается сводная таблица на основе объекта P ivotC ache. Далее программа добавляет поля к созданной сводной таблице:

Категория — поле фильтра отчета (страницы);

Подразделение — поле фильтра отчета (страницы);

Отдел — поле строки;

Месяц — поле столбца;

План — поле данных;

Факт — поле данных.

Обратите внимание, что свойство O r ie n t a t io n объекта D a t a P iv o t F ie ld уста­ новлено равным x lR o w F ie ld с помощью следующего оператора:

.D a ta P iv o tF ie ld .O rie n ta tio n = x lR o w F ie ld

Этот оператор определяет общую ориентацию сводной таблицы, а также представля­ ет ее с помощью поля Значение суммы в списке полей сводной таблицы (рис. 17.5). Попытайтесь переместить это поле в раздел Надписи столбцов, после чего посмотрите, как изменяется макет сводной таблицы.

Затем процедура использует метод Add из коллекции C a lc u la te d F ie ld s для соз­ дания вычисляемого поля О ткл о нени е , величина которого представляет собой резуль­ тат вычитания значения поля Ф акт из значения поля План. Это вычисляемое поле отно­ сится к категории полей данных.

П ри м еч ан и е

Для добавления вычисляемого поля в сводную таблицу вручную воспользуй­

тесь командой Сводная таблица^Параметры^Вычисления^Поля, элементы и наборы^Вычисляемое поле (PivotTable^Options^Calculations^Fields, Items & Sets^Calculation Field) для перехода вдиалоговое окно Вставка вычисляемо­ го поля (Insert Calculated Field).

18 3ak. 3 10 7

Часть V. Профессиональные методы программирования

Dim

PTCache As P ivotC ache

Dim

PT As P iv o tT a b le

 

Dim

SummarySheet

As

W orksheet

Dim

ItemName As

S trin g

Dim

Row As Long,

Col

As Long, i As Long

A p p lic a tio n .S c re e n U p d a tin g

= F alse

Удаление л и ста итогов при е го наличии

On E r ro r Resume

Next

= F alse

A p p lic a tio n .D is p la y A le r ts

S h e e ts ( " И т о г" ) .D e le te

 

On E r r o r GoTo 0

 

 

Добавление листа

и тогов

 

Set SummarySheet

= W orksheets.Add

A ctiveS heet.N am e

= "И то г"

 

Выделение кэш -пам яти для сводной таблицы

 

 

 

Set

PTCache = A ctive W o rkb o o k . P ivo tC a ch e s . C re a te (

_

 

 

 

SourceType: = xlD atab ase ,

_

 

 

 

 

 

S ourceD ata: = S he ets( "Данны еОпроса") . R a n g e ("A l") . _

 

 

 

C urrentR egion)

 

 

 

 

 

 

 

 

Row

=

1

 

 

 

 

 

 

 

 

 

 

 

 

 

For

 

i

= 1 To

14

 

6

 

 

 

 

 

 

 

 

For

Col

=

1

To

Step

5 '2 колонки

 

i

+ 2)

 

 

 

 

ItemName

=

S h e e ts ( "Данны еОпроса") . C e lls (1,

 

 

 

 

W ith

C ells(R o w , C ol)

 

 

 

 

 

 

 

 

.V alue

=

ItemName

 

 

 

 

 

 

 

 

.F o n t.S iz e

= 16

 

 

 

 

 

 

 

 

 

End W ith

 

 

 

 

 

 

 

 

 

 

Создание

 

сводной

таблицы

 

 

 

 

 

 

Set

PT =

 

A c tiv e S h e e t. P iv o tT a b le s .A d d ( _

 

 

 

 

 

 

 

P ivo tC a ch e : =PTCache, _

 

+

1,

C o l))

 

 

 

 

T a b le D e stin a tio n := S u m m a ryS h e e t. C ells(R o w

 

Добавление

полей

 

 

 

 

 

 

 

 

I f

Col

= 1

Then

'

таблицы ч а с то т

 

 

 

 

 

W ith

P T .P ivo tF ie ld s(Ite m N a m e )

 

 

 

 

 

 

. O rie n ta tio n

= x lD a ta F ie ld

 

 

 

 

 

 

.Name =

"Ч астота"

 

 

 

 

 

 

 

 

.F u n c tio n

=

xlC o u n t

 

 

 

 

 

 

End

 

W ith

 

 

 

 

 

 

 

 

 

 

 

E lse

'

процентные

таблицы

 

 

 

 

W ith

P T .P ivo tF ie ld s(Ite m N a m e )

 

 

 

 

 

 

.O r ie n ta tio n

= x lD a ta F ie ld

 

 

 

 

 

 

.Name =

"Процент"

 

 

 

 

 

 

 

 

.F u n c tio n

=

xlC o u n t

 

 

 

 

 

 

 

.C a lc u la tio n

= xlP e rce ntO fC olu m n

 

 

 

 

 

 

.NumberFormat = " 0 . 0%"

 

 

 

 

 

End

 

W ith

 

 

 

 

 

 

 

 

 

 

 

End

 

I f

 

 

 

 

 

 

 

= x lR o w F ie ld

 

 

 

P T .P iv o tF ie ld s (Ite m N a m e ).O rie n ta tio n

 

 

 

P T .P iv o tF ie ld s ( "П ол") .O r ie n ta tio n =

x lC o lu m n F ie ld

 

 

 

PT. T a b le S ty le 2

=

"P ivo tS tyle M e d iu m 2 "

 

 

 

 

 

P T .D is p la y F ie ld C a p tio n s

= F alse

 

 

 

 

 

I f

Col

= 6

Then