Displaying a PivotTable’s Name in the PivotTable

David wonders if there is a way to display a PivotTable’s name within the PivotTable itself.

The short answer is that there is no way to do this automatically. The longer answer is that you can “cheat” and force a name into the PivotTable. For instance, you could select the row label cell in the PivotTable and edit it (F2), replacing whatever is there with whatever name you want to type. This is far from automatic, and when you refresh the PivotTable, you’ll need to remember to edit the cell again.

Another way to force a name into the PivotTable is to use a macro. There are probably a few approaches you could take in your macro. One approach is to create a data table on which your PivotTable will be based. Give the data table a heading, in the first column. (Any old text for the heading will do, as the macro will overwrite it.)

After you create your PivotTable, run the following macro. It determines the name of the PivotTable, stuffs it into the heading of the data table, refreshes the PivotTable (so the name appears there), and then updates the name of the PivotTable report filter so it is the same as the PivotTable name.

Sub GetPVName()
    Dim pvt As PivotTable
    Dim PVName As String

    ' Get the PivotTable name from the ActiveSheet
    ' If there are multiple PivotTables, this approach
    ' ensures the macro will work with the last PivotTable
    ' in the PivotTables collection
    For Each pvt In ActiveSheet.PivotTables
        PVName = pvt.Name
    Next pvt

    ' Put PivotTable name as a heading for the first
    ' column of the data table
    Range("Table1").Cells(0, 1) = PVName

    ' Refresh the PivotTable

    ' Set the PivotTable name in the report filter
    With ActiveSheet.PivotTables(PVName).PivotFields(PVName)
        .Orientation = xlPageField
        .Position = 1
    End With
End Sub