How to list all calculated fields in a PivotTable using VBA?

To list all the calculated fields in a PivotTable using VBA, you can iterate over the `CalculatedFields` collection of the PivotTable. Below is a sample VBA code that demonstrates how to do this:

Sub ListCalculatedFieldsInPivotTable()
    Dim ws As Worksheet
    Dim pt As PivotTable
    Dim cf As PivotField
    Dim cfList As String
    Dim i As Integer

    ' Assuming your PivotTable is on the active sheet
    Set ws = ActiveSheet
    ' Set reference to the first PivotTable on the sheet.
    ' Change this to your specific PivotTable reference if needed.
    Set pt = ws.PivotTables(1)

    ' Initialize the list
    cfList = "Calculated Fields: " & vbNewLine

    ' Loop through each calculated field in the PivotTable
    If pt.CalculatedFields.Count > 0 Then
        For i = 1 To pt.CalculatedFields.Count
            Set cf = pt.CalculatedFields(i)
            cfList = cfList & cf.Name & vbNewLine
        Next i
    Else
        cfList = cfList & "No calculated fields found." & vbNewLine
    End If

    ' Display the list of calculated fields
    MsgBox cfList, vbInformation, "Calculated Fields in PivotTable"

End Sub

How the Code Works:

  • Set Worksheet and PivotTable:
    • The code assumes the active sheet contains the PivotTable and sets a reference to the first PivotTable on that sheet.
  • Initialize a String for Output:
    • `cfList` is initialized to store the names of the calculated fields.
  • Iterate Over Calculated Fields:
    • The `CalculatedFields` collection is accessed from the PivotTable.
    • A loop iterates over each calculated field, retrieving its name and appending it to the output string.
  • Display the Result:
    • A message box is used to display the names of all calculated fields found. If no calculated fields are present, it informs the user.

Customization:

  • PivotTable Reference: Modify `ws.PivotTables(1)` to `ws.PivotTables(“YourPivotTableName”)` if you want to specify a particular PivotTable by name.
  • Output Method: Instead of a message box, you can choose to output the list to the worksheet or another location. Adjust the `MsgBox` line accordingly to suit your needs.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project