数据透视表的内容格式

时间:2019-11-05 12:43:51

标签: excel vba pivot-table

所有人

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

1 个答案:

答案 0 :(得分: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