我有一个由43个枢纽组成的枢纽表。它们中的39个用于数据字段。每4周,将使用新数据更新数据,这39个数据字段中的第一个不再在数据中,最后添加了一个新数据字段。
我有一个脚本,该脚本删除所有数据字段,并且它们添加所有需要的39个数据字段。剩下的唯一事情就是使用最后一个数据字段(的值)对之后的数据进行排序。
我认为我可以获取最后一个数据字段的名称,并将其用作排序脚本的字符串,然后就可以完成。但是结果并没有我希望的那样。
我有这个用于读取/获取要用于排序的枢轴字段值:
Sub AsSum()
Dim pf As PivotField
Dim pfvalue As String
With Worksheets("pivot").PivotTables("Draaitabel1")
pfvalue = .PivotFields(42).Name
.ManualUpdate = True
For Each pf In .DataFields
With pf
.Function = xlSum
.Caption = "." & .SourceName
.NumberFormat = "#,##0"
End With
Next pf
.ManualUpdate = False
End With
Worksheets("pivot").PivotTables("Draaitabel1").PivotCache.Refresh
Worksheets("pivot").PivotTables("Draaitabel1").PivotField("Product") _
.AutoSort xlDescending, pfvalue
End Sub
在这里我要怎么做才能使表按上次添加的数据周期排序?
以下是枢轴布局的某些部分以及可用的枢轴字段列表: 我想对带箭头的枢轴列/字段上的枢轴进行排序
但是当我进行实际排序时,会收到一个错误(执行期间出现错误438:此对象不支持此属性或方法):
这是Actuel枢轴布局/设计:
启动宏记录器时,我只是按最后一列手动对轴进行排序,这是宏记录器创建的脚本:
ActiveSheet.PivotTables("Draaitabel1").PivotFields("Product").AutoSort _
xlDescending, ".Qw 32, 2018", ActiveSheet.PivotTables("Draaitabel1"). _
PivotColumnAxis.PivotLines(39), 1
我尝试使用此方法并将最后一部分添加到脚本中,看是否有区别,但这没有,这就是我将其添加到脚本中的方式:
Worksheets("pivot").PivotTables("Draaitabel1").PivotCache.Refresh
Worksheets("pivot").PivotTables("Draaitabel1").PivotField("Product") _
.AutoSort xlDescending, pfvalue, Worksheets("pivot").PivotColumnAxis.PivotLines(39), 1
End Sub
vba调试仍然将实际排序的最后几行突出显示为黄色。
答案 0 :(得分:0)
我发现了问题。
下面的这一行仅丢失一个字母:
Worksheets("pivot").PivotTables("Draaitabel1").PivotField("Product") _
.AutoSort xlDescending, pfvalue
相反,它必须是: Worksheets(“ pivot”)。PivotTables(“ Draaitabel1”)。PivotField s (“产品”)_ .AutoSort xlDescending,pfvalue
现在它可以完美排序了。