使用vba在更改数据透视表字段名称上对更新数据透视表进行排序

时间:2018-09-21 12:04:43

标签: excel vba sorting excel-2010

我有一个由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

在这里我要怎么做才能使表按上次添加的数据周期排序?

以下是枢轴布局的某些部分以及可用的枢轴字段列表: pivot_sort.png 我想对带箭头的枢轴列/字段上的枢轴进行排序

pfvalue脚本完美地读出了正确的字段名称: pivot_sort.png

但是当我进行实际排序时,会收到一个错误(执行期间出现错误438:此对象不支持此属性或方法): pivot_sort2.png

这是Actuel枢轴布局/设计:

pivot_sort4.png

启动宏记录器时,我只是按最后一列手动对轴进行排序,这是宏记录器创建的脚本:

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调试仍然将实际排序的最后几行突出显示为黄色。

1 个答案:

答案 0 :(得分:0)

我发现了问题。

下面的这一行仅丢失一个字母:

Worksheets("pivot").PivotTables("Draaitabel1").PivotField("Product") _
 .AutoSort xlDescending, pfvalue

相反,它必须是: Worksheets(“ pivot”)。PivotTables(“ Draaitabel1”)。PivotField s (“产品”)_  .AutoSort xlDescending,pfvalue

现在它可以完美排序了。