【发布时间】: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