【问题标题】:Collapsing One Pivot Field Among Many在许多中折叠一个枢轴场
【发布时间】:2018-06-17 21:06:10
【问题描述】:

我有一个包含几个字段的数据透视表,我只想折叠一个数据透视表。我似乎无法让它工作,所以需要一些帮助。

Dim pt As PivotTable
Dim pr As Range
Dim pc As PivotCache


Set pr = dataSht.UsedRange
Set pc = wb.PivotCaches.Create(xlDatabase, SourceData:=pr)
Set pt = pc.createPivotTable(wb.Worksheets(shtName).Range("A1"), strPivotName)


With pt

.PivotFields("One").Orientation = xlRowField
.PivotFields("One").Subtotals(1) = False
.PivotFields("Two").Orientation = xlRowField
.PivotFields("Two").Subtotals(1) = False
.PivotFields("Three").Orientation = xlRowField
.PivotFields("Three").Subtotals(1) = False
.PivotFields("Four").Orientation = xlRowField
.PivotFields("Four").Subtotals(1) = False


With .PivotFields("Sum of $$$ (000)")
        .Orientation = xlDataField
        .Caption = "% Total"
        .Calculation = xlPercentOfParent
        .BaseField = "Two"
        .NumberFormat = "0.00%"

End With

我希望折叠最后一个字段,四。在我的第一个 With 末尾添加 .PivotFields("Four").ShowDetail = False 会给我一个应用程序定义或对象定义的错误。 “ShowDetails”结果相同。

另外,我尝试过使用 DrillTo,虽然我不太明白,但在 End With 之后的以下容量:

Dim pi as PivotItem
pi.DrillTo Field:= "Three"

再次,我得到一个错误。未设置对象变量或块变量。

我的头仍然围绕着 VBA,所以如果有人可以帮助我,那就太好了!

【问题讨论】:

    标签: excel pivot-table vba


    【解决方案1】:

    想通了!所以对于那些未来可能有类似问题的用户:

    我不得不提高一个级别并专门识别数据透视表,因为它在 with pt 中不起作用

    所以,在我的问题中的上述代码之后,我添加了

    pt.TableStyle2 = "PivotStyleMedium3"
    pt.PivotFields("Three").ShowDetail = False
    
    end With
    

    为什么它在我的第一个 with 块中不起作用,我不知道,但至少它起作用了。我的猜测是在数据透视表完全创建之前无法操作它。可能是。 耸耸肩

    【讨论】:

    • 嗯。这也对我有用,我试图让它在 With 块内工作但无济于事。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2018-11-27
    • 2012-09-23
    • 2014-01-08
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多