在多个数据透视表中折叠一个数据透视字段

3

我有一个数据透视表,有几个字段,但是我只想折叠一个数据透视字段。我尝试了几次都不成功,所以需要一些帮助。

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

我希望折叠最后一个字段,即Four。在我的第一个With的结尾添加.PivotFields("Four").ShowDetail = False会导致应用程序定义或对象定义错误。 "ShowDetails"也会出现同样的错误。
另外,我尝试使用DrillTo,但我不太理解如何使用,在End With之后按以下方式尝试:
Dim pi as PivotItem
pi.DrillTo Field:= "Three"

我又遇到了一个错误。对象变量或者块变量未设置。

我还在努力理解VBA,如果有人可以帮帮我就太好了!

1个回答

1

搞定了!所以对于将来可能遇到类似问题的用户:

我必须提升一个级别并明确标识数据透视表,因为它在with pt中无法正常工作。

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

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

end With

我不知道为什么我的第一个with块不起作用,但至少现在它能正常工作了。我猜可能是无法在透视表完全创建之前操纵它的原因。或许吧。耸肩

嗯,这对我也有效,我一直试图让它在 With 块内工作,但无济于事。谢谢 :) - FreeSoftwareServers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接