Как на VBA программно сделать "Сводную таблицу"?

Программирование на Visual Basic for Applications
SlavikP
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 1
Зарегистрирован: 26.12.2005 (Пн) 4:03

Как на VBA программно сделать "Сводную таблицу"?

Сообщение SlavikP » 26.12.2005 (Пн) 4:10

Есть в Excel табличка с двумя листами - в одном некие данные, в другом т.н.
"сводная таблица" (pivot table) по этим данным.
Данные в первом листе преиодически изменяются (в основном кол-во записей)
После каждого изменения приходится лезть в свойства итоговой таблицы и менять диапазон и на актуальный.
Хотелось бы пример скрипта на VB, который можно привязать к кнопке для изменения диаразона значений для сводной таблицы.
Примечание: таблица данных начинается всегда со строки 2 и заканчивается пустыми строками. Внутри таблицы пустых строк нет.
Absit invidia verbo...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.12.2005 (Пн) 7:39

Me.PivotTables(1).SourceData = Me.Cells(2,1).CurrentRegion.Address
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

pshik
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 23.07.2005 (Сб) 18:57

Сообщение pshik » 29.12.2005 (Чт) 1:40

Application.StatusBar = "Creating a Labour Pivot Table list from source spreadsheet....."


Set xlSheet = xlBook.Worksheets("Labour")
Set xlsheetpt = xlBook.Worksheets("Pivot Table")
Set rngData = xlSheet.UsedRange

Set pvtTable = xlSheet.PivotTableWizard(SourceType:=xlDatabase, SourceData:=rngData, TableDestination:=xlsheetpt.Range("B5"))

With pvtTable
' Specify row field.
.PivotFields("cwa").Orientation = xlRowField
' Specify column fields. Specify their relative positions

With .PivotFields("contract_no")
.Orientation = xlColumnField
.Position = 1
End With
With .PivotFields("month")
.Orientation = xlColumnField
.Position = 2
End With
' Specify page fields.
.PivotFields("3rd party").Orientation = xlPageField
.PivotFields("year").Orientation = xlPageField
' Specify data field.
.PivotFields("amount").Orientation = xlDataField

End With

pvtTable.RefreshTable


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 86

    TopList