Excel 数据透视表&x27;s内容格式

Excel 数据透视表&x27;s内容格式,excel,vba,pivot-table,Excel,Vba,Pivot Table,各位, 在我正在处理的这个数据透视表中,源数据具有货币值和数量。我的数据透视表中有一个过滤器,用于选择我希望在数据透视表中看到的数据类型,是“V”还是“Q” 我的问题是,我需要根据我看到的信息类型来格式化数据透视表的内容:对于货币值,我需要以“####.00€”格式查看内容;对于数量值,单位为“#,##0” 我已经尝试为数据透视字段使用DataRange属性(如代码中所示),甚至尝试直接在数据透视字段上使用NumberFormat,但这些都不起作用 你有什么建议来解决这个问题吗 Dim vp A

各位,

在我正在处理的这个数据透视表中,源数据具有货币值和数量。我的数据透视表中有一个过滤器,用于选择我希望在数据透视表中看到的数据类型,是“V”还是“Q”

我的问题是,我需要根据我看到的信息类型来格式化数据透视表的内容:对于货币值,我需要以“####.00€”格式查看内容;对于数量值,单位为“#,##0”

我已经尝试为数据透视字段使用DataRange属性(如代码中所示),甚至尝试直接在数据透视字段上使用NumberFormat,但这些都不起作用

你有什么建议来解决这个问题吗

Dim vp As Workbook
Dim type_qv As String
Dim chart_pt As PivotTable
Dim pf As PivotField

Set vp = ThisWorkbook
Set chart_pt = vp.Sheets("Chart").PivotTables("VP_table")

        'this detects what type of data is being used
type_qv = vp.Sheets("Chart").Range("B2").Value

If type_qv = "Q" Then
    For Each pf In chart_pt.RowFields
        pf.DataRange.NumberFormat = "#,##0"
    Next
End If

If type_qv = "V" Then
    For Each pf In chart_pt.RowFields
        pf.DataRange.NumberFormat = "# ###.00 €"
    Next
End If
这是“Q的总和”,但您不想查看描述,因为他们可以更改它,可以移动表,并且可以显示两个字段

Dim chart_pt As PivotTable, df As PivotField
Set chart_pt = ActiveSheet.Range("A3").PivotTable
For Each df In chart_pt.DataFields
    Select Case True
        Case df.Name Like "*Q"
            df.DataRange.NumberFormat = "#,##0"
        Case df.Name Like "*V"
            df.DataRange.NumberFormat = "# ###.00 €"
        Case Else
            df.DataRange.NumberFormat = "# ###.00"
    End Select
Next

未经测试,但您可能可以使用条件格式来执行此操作。我不会循环,我只会使用:
chart\u pt.PivotFields(“您的pivotfield”).NumberFormat=“#.###0,00€”
Hi,@BigBen,我更希望通过VBA实现此功能,因为它不太容易出现人为错误。数据透视表变化很大,列数和/或行数可能有很大的变化。@SSGrace您可以
将PvtField设置为数据透视字段,并循环遍历数据透视表上的所有数据透视字段…@SSGrace您可以查看B2单元格的值来定义数据透视显示的值(“Q之和”)。如果几乎真的发生了任何事情(表格视图、移动轴心、显示多个值等),它将无法工作。在我的回答中,我循环了所有显示的数据字段。