数据透视表显示源数据中不存在的标签

时间:2019-06-28 03:54:33

标签: excel pivot-table

我继承了一个现有的数据表,但数据为零,并且已经预先创建了数据透视表,这些数据透视表也已刷新为空(仅保留标题和格式)。现在,当我在表中键入“ A”时,数据透视表将显示“ B”标签的记录。当我双击该行上的值以显示源时,它显示为“ A”。这样会显示两条记录,而其他数据也可以。

我知道您可以重命名枢轴项目标签,但是即使您清除了表并刷新了枢轴表后,它是否仍以某种方式“存储”了该信息?在使用Excel的12多年中,这对我来说是非常新的东西。

我尝试过的一些事情:

  • 重置源数据并刷新=相同的问题,“ A”仍然显示为“ B”
  • 每个字段要保留的项目数:无=刷新后仍然存在相同的问题
  • 创建一个新的数据透视表=这样可以解决问题,“ A”最终显示为“ A”

2 个答案:

答案 0 :(得分:4)

创建数据透视表时,您可以在数据透视表中重命名标签,并且标签将保留新名称。

假设您的数据中包含A,B,C,则可以在数据透视表中将C重命名为D,从现在开始,即使刷新数据,即使您将C的值也显示为D。修改数据或删除所有行。但是,如果您修改数据中的列名,则不会,请参见下文。

这是一个很好的功能:例如,当您有一个带有代码的表时,您可以将代码重命名为数据透视表中的标签,而无需使用VLOOKUP。


这是从here重置已修改标签的方法。

  1. 在源中重命名列标题/名称
  2. 刷新枢轴。这将删除所有强制标签并从枢轴删除字段。
  3. 将列名称重命名为原来的名称
  4. 再次刷新枢轴
  5. 将该字段重新添加到您的数据透视图中。

请注意,您无法使用SSAS数据透视表执行此操作。

答案 1 :(得分:1)

根据要求,下面是通过VBA查找这样重命名的枢轴字段的示例。

这用于SourceDataRange(不是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