How to change the layout of a PivotTable using VBA?

To change the layout of a PivotTable using VBA in Excel, you’ll need to utilize the PivotTable object model. You can control various aspects of the PivotTable, such as changing the report layout, adding or removing fields, and adjusting other settings.

Here is a basic example of how to change the layout of a PivotTable using VBA code:

Sub ChangePivotTableLayout()
    Dim ws As Worksheet
    Dim pt As PivotTable
    Dim pc As PivotCache
    
    ' Define the worksheet and PivotTable
    Set ws = ThisWorkbook.Worksheets("Sheet1") ' Change "Sheet1" to your sheet name
    Set pt = ws.PivotTables("PivotTable1") ' Change "PivotTable1" to your PivotTable name

    ' Example: Change the report layout
    ' Possible values: xlCompactRow, xlTabularRow, xlOutlineRow
    pt.RowAxisLayout xlTabularRow

    ' Example: Add a field to the rows
    ' If you want to add a field; it must be available in your PivotTable source data
    pt.PivotFields("FieldName1").Orientation = xlRowField

    ' Example: Add a field to the columns
    pt.PivotFields("FieldName2").Orientation = xlColumnField

    ' Example: Add a field to the data area
    pt.AddDataField pt.PivotFields("FieldName3"), "Sum of FieldName3", xlSum

    ' Example: Remove a field
    ' pt.PivotFields("FieldName1").Orientation = xlHidden

    ' Example: Change the data display
    With pt.PivotFields("FieldName3")
        .Function = xlSum
        .NumberFormat = "#,##0"
    End With
End Sub

Key Points:

  • Worksheet and PivotTable Identification:
    • Specify the appropriate worksheet and PivotTable name.
  • Change Report Layout:
    • Use `pt.RowAxisLayout` with options like `xlCompactRow`, `xlTabularRow`, or `xlOutlineRow`.
  • Add or Remove Fields:
    • You can add fields to rows, columns, or the data area using `Orientation` and specify whether it should be a row field (`xlRowField`), column field (`xlColumnField`), or data field.
    • To remove a field, set its orientation to `xlHidden`.
  • Data Field Settings:
    • Configure how data fields are aggregated (e.g., `xlSum`, `xlCount`).
    • Set number formats and other properties as needed.

Remember to adjust this code to fit your specific PivotTable configuration and VBA environment.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project