Excel 排序数据透视表VBA
目标Excel 排序数据透视表VBA,excel,vba,sorting,pivot-table,Excel,Vba,Sorting,Pivot Table,目标 Sub createPivot() Dim ws As Worksheet Dim pvtCache As pivotCache Dim pvt As pivotTable Dim srcData As String Dim lastRow As Long Dim startPvt As String Dim target As Worksheet 'Delete previous pivottable Worksheets("PIVOT").PivotTables("PivotTab
Sub createPivot()
Dim ws As Worksheet
Dim pvtCache As pivotCache
Dim pvt As pivotTable
Dim srcData As String
Dim lastRow As Long
Dim startPvt As String
Dim target As Worksheet
'Delete previous pivottable
Worksheets("PIVOT").PivotTables("PivotTable1").TableRange2.Clear
'Select pivot table data
Worksheets("CONSOLIDATED").Activate
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
srcData = ActiveSheet.Name & "!" & Range("A1:H" & lastRow).Address(ReferenceStyle:=xlR1C1)
'Set pivot table location
Set target = ThisWorkbook.Worksheets("PIVOT")
startPvt = target.Name & "!" & target.Range("A1").Address(ReferenceStyle:=xlR1C1)
'Create pivot cache
Set pvtCache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=srcData)
'Deploy pivot table
Set pvt = pvtCache.CreatePivotTable( _
TableDestination:=startPvt, _
TableName:="PivotTable1")
'Add Pivot Fields
pvt.PivotFields("Fiscal Year").Orientation = xlColumnField
pvt.PivotFields("Fiscal Year").Position = 1
pvt.PivotFields("Fiscal Month").Orientation = xlColumnField
pvt.PivotFields("Fiscal Month").Position = 2
pvt.PivotFields("Unit").Orientation = xlRowField
pvt.PivotFields("Unit").Position = 1
pvt.PivotFields("Project").Orientation = xlRowField
pvt.PivotFields("Project").Position = 2
pvt.PivotFields("Base Expense").Orientation = xlDataField
'Sort by largest !!!ERROR!!!
pvt.PivotField("Base Expense") _
.AutoSort xlDescending, "Base Expense"
End Sub
按降序对数据透视表值排序
方法
PIVOT
)target
)pvtCache
)pvt
)pvt.PivotFields(41;)
)数据透视字段(“基本费用”)
)Sub createPivot()
Dim ws As Worksheet
Dim pvtCache As pivotCache
Dim pvt As pivotTable
Dim srcData As String
Dim lastRow As Long
Dim startPvt As String
Dim target As Worksheet
'Delete previous pivottable
Worksheets("PIVOT").PivotTables("PivotTable1").TableRange2.Clear
'Select pivot table data
Worksheets("CONSOLIDATED").Activate
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
srcData = ActiveSheet.Name & "!" & Range("A1:H" & lastRow).Address(ReferenceStyle:=xlR1C1)
'Set pivot table location
Set target = ThisWorkbook.Worksheets("PIVOT")
startPvt = target.Name & "!" & target.Range("A1").Address(ReferenceStyle:=xlR1C1)
'Create pivot cache
Set pvtCache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=srcData)
'Deploy pivot table
Set pvt = pvtCache.CreatePivotTable( _
TableDestination:=startPvt, _
TableName:="PivotTable1")
'Add Pivot Fields
pvt.PivotFields("Fiscal Year").Orientation = xlColumnField
pvt.PivotFields("Fiscal Year").Position = 1
pvt.PivotFields("Fiscal Month").Orientation = xlColumnField
pvt.PivotFields("Fiscal Month").Position = 2
pvt.PivotFields("Unit").Orientation = xlRowField
pvt.PivotFields("Unit").Position = 1
pvt.PivotFields("Project").Orientation = xlRowField
pvt.PivotFields("Project").Position = 2
pvt.PivotFields("Base Expense").Orientation = xlDataField
'Sort by largest !!!ERROR!!!
pvt.PivotField("Base Expense") _
.AutoSort xlDescending, "Base Expense"
End Sub
错误
“对象不支持此属性或方法”
@线
'Sort by largest !!!ERROR!!!
pvt.PivotField("Base Expense") _
.AutoSort xlDescending, "Base Expense"
问题
您遇到的问题是,您正在尝试对数据字段中的值进行排序。它不知道按哪个字段排序 要在其上运行
AutoSort
方法的数据透视字段就是要排序的字段。方法的字段
参数是要对其进行排序的键
在这种情况下,您需要以下内容:
pvt.PivotField("Project") _
.AutoSort xlDescending, "sum of Base Expense"
您遇到的问题是,您正在尝试对数据字段中的值进行排序。它不知道按哪个字段排序 要在其上运行
AutoSort
方法的数据透视字段就是要排序的字段。方法的字段
参数是要对其进行排序的键
在这种情况下,您需要以下内容:
pvt.PivotField("Project") _
.AutoSort xlDescending, "sum of Base Expense"