t
Create a Pivot Table 1
public wbTest as workbook
public wsTable as worksheet
public wsPiv as worksheetSub CreatePivotTable
wbTest.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=wsTable.ListObjects("tblTest"), Version:=6).CreatePivotTable TableDestination:=wsPiv.[a3], TableName:="PivotTest", DefaultVersion:=6With wsPiv.PivotTables("PivotTest").PivotFields("MyField1")
.Orientation = xlPageField
.Position = 1
End WithWith ActiveSheet.PivotTables("PivotTest").PivotFields("MyField2")
.Orientation = xlRowField
.Position = 1
End WithEnd Sub
Create a Pivot Table 2
Sub CreatePivotTable() 'PURPOSE: Creates a brand new Pivot table on a new worksheet from data in the ActiveSheet Dim sht As Worksheet Dim pvtCache As PivotCache Dim pvt As PivotTable Dim StartPvt As String Dim SrcData As String 'Determine the data range you want to pivot SrcData = ActiveSheet.Name & "!" & Range("A1:R100").Address(ReferenceStyle:=xlR1C1) 'Create a new worksheet Set sht = Sheets.Add 'Where do you want Pivot Table to start? StartPvt = sht.Name & "!" & sht.Range("A3").Address(ReferenceStyle:=xlR1C1) 'Create Pivot Cache from Source Data Set pvtCache = ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=SrcData) 'Create Pivot table from Pivot Cache Set pvt = pvtCache.CreatePivotTable(TableDestination:=StartPvt, TableName:="PivotTable1") End Sub
Create multiple Pivot from one Cache
Option Explicit Sub CreateMultiplePivotTables() 'set the data for the source range Dim source_range As Range Set source_range = ActiveSheet.Range("A1").CurrentRegion 'create the pivot cache Dim pivot_cache As PivotCache Set pivot_cache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=source_range) Dim current_sheet As Worksheet Dim current_pivottable As PivotTable 'create a new worksheet for the first pivot table Set current_sheet = Worksheets.Add 'create first pivot table Set current_pivottable = current_sheet.PivotTables.Add(PivotCache:=pivot_cache, TableDestination:=current_sheet.Range("A1"), TableName:="PivotTable1") 'build the first pivot table With current_pivottable 'etc ' ' End With 'create another new worksheet for the second pivot table Set current_sheet = Worksheets.Add 'create second pivot table Set current_pivottable = current_sheet.PivotTables.Add(PivotCache:=pivot_cache, TableDestination:=current_sheet.Range("A1"), TableName:="PivotTable2") 'build the second pivot table With current_pivottable 'etc ' ' End With End Sub
Delete a specific Pivot Table
Sub DeletePivotTable() 'PURPOSE: How to delete a specifc Pivot Table 'SOURCE: www.TheSpreadsheetGuru.com'Delete Pivot Table By Name
ActiveSheet.PivotTables("PivotTable1").TableRange2.ClearEnd Sub
Delete all Pivot Tables in a Workbook
Sub DeleteAllPivotTables()Dim sht As Worksheet
Dim pvt As PivotTable'Loop Through Each Pivot Table In Currently Viewed Workbook
For Each sht In ActiveWorkbook.Worksheets
For Each pvt In sht.PivotTables
pvt.TableRange2.Clear
Next pvt
Next shtEnd Sub
Rapport indeling - Compacte weergave, Overzichtsweergave, Tabelweergave
'Compacte weergave
ActiveSheet.PivotTables("PivotClCsNmbrs").RowAxisLayout xlCompactRow
'Overzichtsweergave
ActiveSheet.PivotTables("PivotClCsNmbrs").RowAxisLayout xlOutlineRow
'Tabelweergave
ActiveSheet.PivotTables("PivotClCsNmbrs").RowAxisLayout xlTabularRow
Repeat labels
'Inschakelen Labels herhalen
ActiveSheet.PivotTables("Pivot1").RepeatAllLabels xlRepeatLabels
piv1.RepeatAllLabels xlRepeatLabels'Uitschakelen Labels herhalen
piv1.RepeatAllLabels xlDoNotRepeatLabels
Subtotals
pt.PivotFields("PivField1").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
Add Pivot Fields
Sub Adding_PivotFields() 'PURPOSE: Show how to add various Pivot Fields to Pivot Table
Dim pvt As PivotTableSet pvt = ActiveSheet.PivotTables("PivotTable1")
'Add item to the Report Filter
pvt.PivotFields("Year").Orientation = xlPageField'Add item to the Column Labels
pvt.PivotFields("Month").Orientation = xlColumnField'Add item to the Row Labels
pvt.PivotFields("Account").Orientation = xlRowField'Position Item in list
pvt.PivotFields("Year").Position = 1'Format Pivot Field
pvt.PivotFields("Year").NumberFormat = "#,##0"'Turn on Automatic updates/calculations --like screenupdating to speed up code
pvt.ManualUpdate = FalseEnd Sub
Add Calculated Pivot Fields
Sub AddCalculatedField() 'PURPOSE: Add a calculated field to a pivot table
Dim pvt As PivotTable
Dim pf As PivotField'Set Variable to Desired Pivot Table
Set pvt = ActiveSheet.PivotTables("PivotTable1")'Set Variable Equal to Desired Calculated Pivot Field
For Each pf In pvt.PivotFields
If pf.SourceName = "Inflation" Then Exit For
Next'Add Calculated Field to Pivot Table
pvt.AddDataField pfEnd Sub
Add A Values Field
Sub AddValuesField() 'PURPOSE: Add A Values Field to a Pivot Table
Dim pvt As PivotTable
Dim pf As String
Dim pf_Name As Stringpf = "Salaries"
pf_Name = "Sum of Salaries"Set pvt = ActiveSheet.PivotTables("PivotTable1")
pvt.AddDataField pvt.PivotFields("Salaries"), pf_Name, xlSum
End Sub
Remove Pivot Fields
Sub RemovePivotField() ‘PURPOSE: Remove a field from a Pivot Table
‘Removing Filter, Columns, Rows
ActiveSheet.PivotTables(“PivotTable1”).PivotFields(“Year”).Orientation = xlHidden‘Removing Values
ActiveSheet.PivotTables(“PivotTable1”).PivotFields(“Sum of Salaries”).Orientation = xlHiddenEnd Sub
Remove Calculated Pivot Fields
Sub RemoveCalculatedField()
‘PURPOSE: Remove a calculated field from a pivot table
‘SOURCE: www.TheSpreadsheetGuru.com
Dim pvt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
‘Set Variable to Desired Pivot Table
Set pvt = ActiveSheet.PivotTables(“PivotTable1”)
‘Set Variable Equal to Desired Calculated Data Field
For Each pf In pvt.DataFields
If pf.SourceName = “Inflation” Then Exit For
Next
‘Hide/Remove the Calculated Field
pf.DataRange.Cells(1, 1).PivotItem.Visible = False
End Sub
Refresh Pivot Table(s)
Refresh Pivot Table(s)
Sub RefreshingPivotTables()
‘PURPOSE: Shows various ways to refresh Pivot Table Data
‘SOURCE: www.TheSpreadsheetGuru.com
‘Refresh A Single Pivot Table
ActiveSheet.PivotTables(“PivotTable1”).PivotCache.Refresh
‘Refresh All Pivot Tables
ActiveWorkbook.RefreshAll
End Sub
Report Filter On A Single Item
Report Filter On A Single Item
Sub ReportFiltering_Single()
‘PURPOSE: Filter on a single item with the Report Filter field
‘SOURCE: www.TheSpreadsheetGuru.com
Dim pf As PivotField
Set pf = ActiveSheet.PivotTables(“PivotTable2”).PivotFields(“Fiscal_Year”)
‘Clear Out Any Previous Filtering
pf.ClearAllFilters
‘Filter on 2014 items
pf.CurrentPage = “2014”
End Sub
Report Filter On Multiple Items
Report Filter On Multiple Items
Sub ReportFiltering_Multiple()
‘PURPOSE: Filter on multiple items with the Report Filter field
‘SOURCE: www.TheSpreadsheetGuru.com
Dim pf As PivotField
Set pf = ActiveSheet.PivotTables(“PivotTable2”).PivotFields(“Variance_Level_1”)
‘Clear Out Any Previous Filtering
pf.ClearAllFilters
‘Enable filtering on multiple items
pf.EnableMultiplePageItems = True
‘Must turn off items you do not want showing
pf.PivotItems(“Jan”).Visible = False
pf.PivotItems(“Feb”).Visible = False
pf.PivotItems(“Mar”).Visible = False
End Sub
Clear Report Filter
Clear Report Filter
Sub ClearReportFiltering()
‘PURPOSE: How to clear the Report Filter field
‘SOURCE: www.TheSpreadsheetGuru.com
Dim pf As PivotField
Set pf = ActiveSheet.PivotTables(“PivotTable2”).PivotFields(“Fiscal_Year”)
‘Option 1: Clear Out Any Previous Filtering
pf.ClearAllFilters
‘Option 2: Show All (remove filtering)
pf.CurrentPage = “(All)”
End Sub
Change Pivot Table Data Source Range
Change Pivot Table Data Source Range
Sub ChangePivotDataSourceRange()
‘PURPOSE: Change the range a Pivot Table pulls from
‘SOURCE: www.TheSpreadsheetGuru.com
Dim sht As Worksheet
Dim SrcData As String
Dim pvtCache As PivotCache
‘Determine the data range you want to pivot
Set sht = ThisWorkbook.Worksheets(“Sheet1”)
SrcData = sht.Name & “!” & Range(“A1:R100”).Address(ReferenceStyle:=xlR1C1)
‘Create New Pivot Cache from Source Data
Set pvtCache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=SrcData)
‘Change which Pivot Cache the Pivot Table is referring to
ActiveSheet.PivotTables(“PivotTable1”).ChangePivotCache (pvtCache)
End Sub
Grand Totals
Grand Totals
Sub PivotGrandTotals()
‘PURPOSE: Show setup for various Pivot Table Grand Total options
‘SOURCE: www.TheSpreadsheetGuru.com
Dim pvt As PivotTable
Set pvt = ActiveSheet.PivotTables(“PivotTable1”)
‘Off for Rows and Columns
pvt.ColumnGrand = False
pvt.RowGrand = False
‘On for Rows and Columns
pvt.ColumnGrand = True
pvt.RowGrand = True
‘On for Rows only
pvt.ColumnGrand = False
pvt.RowGrand = True
‘On for Columns Only
pvt.ColumnGrand = True
pvt.RowGrand = False
End Sub
Report Layout
Report Layout
Sub PivotReportLayout()
‘PURPOSE: Show setup for various Pivot Table Report Layout options
‘SOURCE: www.TheSpreadsheetGuru.com
Dim pvt As PivotTable
Set pvt = ActiveSheet.PivotTables(“PivotTable1”)
‘Show in Compact Form
pvt.RowAxisLayout xlCompactRow
‘Show in Outline Form
pvt.RowAxisLayout xlOutlineRow
‘Show in Tabular Form
pvt.RowAxisLayout xlTabularRow
End Sub
Formatting A Pivot Table's Data
Formatting A Pivot Table’s Data
Sub PivotTable_DataFormatting()
‘PURPOSE: Various ways to format a Pivot Table’s data
‘SOURCE: www.TheSpreadsheetGuru.com
Dim pvt As PivotTable
Set pvt = ActiveSheet.PivotTables(“PivotTable1”)
‘Change Data’s Number Format
pvt.DataBodyRange.NumberFormat = “#,##0;(#,##0)”
‘Change Data’s Fill Color
pvt.DataBodyRange.Interior.Color = RGB(0, 0, 0)
‘Change Data’s Font Type
pvt.DataBodyRange.Font.FontStyle = “Arial”
End Sub
Formatting A Pivot Field's Data
Formatting A Pivot Field’s Data
Sub PivotField_DataFormatting()
‘PURPOSE: Various ways to format a Pivot Field’s data
‘SOURCE: www.TheSpreadsheetGuru.com
Dim pf As PivotField
Set pf = ActiveSheet.PivotTables(“PivotTable1”).PivotFields(“Months”)
‘Change Data’s Number Format
pf.DataRange.NumberFormat = “#,##0;(#,##0)”
‘Change Data’s Fill Color
pf.DataRange.Interior.Color = RGB(219, 229, 241)
‘Change Data’s Font Type
pf.DataRange.Font.FontStyle = “Arial”
End Sub
Expand/Collapse Entire Field Detail
Expand/Collapse Entire Field Detail
Sub PivotField_ExpandCollapse()
‘PURPOSE: Shows how to Expand or Collapse the detail of a Pivot Field
‘SOURCE: www.TheSpreadsheetGuru.com
Dim pf As PivotField
Set pf = ActiveSheet.PivotTables(“PivotTable1”).PivotFields(“Month”)
‘Collapse Pivot Field
pf.ShowDetail = False
‘Expand Pivot Field
pf.ShowDetail = True
End Sub
Loop through pivot table
For cntr = 2 To ptProduct.RowRange.Rows.Count
cmbFilterService.AddItem ptProduct.RowRange.Cells(cntr, 1).Value
Next