Vba代码创build数据透视表,然后按值过滤前10位

我有一些代码将创build一个数据透视表我怎么想,但是当我尝试添加一个数据透视filter来过滤前十个值我得到一个错误:

“运行时错误1004:应用程序定义或对象定义的错误”

Sub Create_Port_Pivots(dataField, PivotLastRow, tableDest, counter) ' ' Creates pivot table on Pivot sheet ' Author: Daryl Findlay (dfind) ' Dim objTable As PivotTable, objField As PivotField ' Select the source sheet and assign LastRow & LastCol ActiveWorkbook.Sheets("Data").Select LastRow = Range("A3").End(xlDown).Row LastCol = Range("A3").End(xlToRight).Column ' Create the PivotTable object. Set objTable = ActiveSheet.PivotTableWizard( _ SourceType:=xlDatabase, _ sourceData:=ActiveSheet.Name & "!R1C1:R" & LastRow & "C" & LastCol, _ TableDestination:="Pivot!R" & PivotLastRow & tableDest, _ TableName:="Pivot" & counter) ' Specify row and column fields. Set objField = objTable.PivotFields("Date") objField.Orientation = xlRowField Set objField = objTable.PivotFields("Time Group") objField.Orientation = xlColumnField Set objField = objTable.PivotFields("Port Name") objField.Orientation = xlRowField ' Specify a data field with its summary. Set objField = objTable.PivotFields(dataField) objField.Orientation = xlDataField objField.Function = xlAverage ' ----------------- Filter by top 10 - Error with second param objField.PivotFilters.Add xlTopCount, objTable.PivotFields("Port Name"), 10 End Sub 

debugging强调这一行作为问题:

 objField.PivotFilters.Add xlTopCount, objTable.PivotFields("Port Name"), 10 

我认为这个问题可能与该函数调用的第二个参数有关。 任何帮助将不胜感激。

与同事交谈后,我发现了另一种方法来做到这一点。

 ActiveSheet.PivotTables("Pivot" & counter).PivotFields("Port Name").AutoShow xlAutomatic _ , xlTop, 10, "Average of Max I/O /sec" 

用上面的代码行代替objField.PivotFilters.Add xlTopCount, objTable.PivotFields("Port Name"), 10它将只显示前10个值