【问题标题】:Pivottable' s content format数据透视表的内容格式
【发布时间】:2019-11-05 12:43:51
【问题描述】:

大家,

在我正在处理的这个数据透视表中,源数据具有货币价值和数量。我的数据透视表中有一个过滤器,用于选择我想在数据透视表中看到的数据类型,是“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

【问题讨论】:

  • 未经测试,但您可以使用条件格式来执行此操作。
  • 我不会循环,我只会使用:chart_pt.PivotFields("YourPivotField").NumberFormat = "#.##0,00 €"
  • 嗨,@BigBen,我宁愿通过 VBA 获得它,因为它不太容易出现人为错误。数据透视表变化很大,可能在列数和/或行数上有很多变化。
  • @SSGrace 你可以Dim PvtField As PivotField 并遍历数据透视表上的所有数据透视字段...
  • @SSGrace 您查看 B2 单元格的值以定义您的枢轴显示的值(“Q 之和”)。如果几乎发生任何事情(表格视图、移动枢轴、显示多个值等),它就不起作用。在我的回答中,我遍历了所有显示的数据字段。

标签: excel vba pivot-table


【解决方案1】:

它是“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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多