我继承了一个现有的数据表,但数据为零,并且已经预先创建了数据透视表,这些数据透视表也已刷新为空(仅保留标题和格式)。现在,当我在表中键入“ A”时,数据透视表将显示“ B”标签的记录。当我双击该行上的值以显示源时,它显示为“ A”。这样会显示两条记录,而其他数据也可以。
我知道您可以重命名枢轴项目标签,但是即使您清除了表并刷新了枢轴表后,它是否仍以某种方式“存储”了该信息?在使用Excel的12多年中,这对我来说是非常新的东西。
我尝试过的一些事情:
答案 0 :(得分:4)
创建数据透视表时,您可以在数据透视表中重命名标签,并且标签将保留新名称。
假设您的数据中包含A,B,C,则可以在数据透视表中将C重命名为D,从现在开始,即使刷新数据,即使您将C的值也显示为D。修改数据或删除所有行。但是,如果您修改数据中的列名,则不会,请参见下文。
这是一个很好的功能:例如,当您有一个带有代码的表时,您可以将代码重命名为数据透视表中的标签,而无需使用VLOOKUP。
这是从here重置已修改标签的方法。
请注意,您无法使用SSAS数据透视表执行此操作。
答案 1 :(得分:1)
根据要求,下面是通过VBA查找这样重命名的枢轴字段的示例。
这用于SourceData
是Range
(不是OLAP多维数据集)的数据透视表。
数据透视表包含错误跳过功能,其中“值”显示为列字段,因为这样的列字段没有SourceName
。
Private Sub ResetPivotfieldNames()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim test As String
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
For Each pf In pt.PivotFields
On Error Resume Next
test = pf.SourceName
If Err.Number = 0 Then
If pf.Name <> pf.SourceName Then
If MsgBox("On worksheet: " & ws.Name & vbCrLf & _
"in pivottable: " & pt.Name & vbCrLf & _
"the pivotfield: " & pf.SourceName & vbCrLf & _
"was renamed to: " & pf.Name, _
vbOKCancel, "Try to rename?") = vbOK Then
pf.Name = pf.SourceName
End If
End If
End If
On Error GoTo 0
Next pf
Next pt
Next ws
End Sub