[英]Adding a Less Than filter to a pivot table in Excel VBA
每當在Excel中激活工作表時,我都試圖將篩選器添加到數據透視表中的列。
到目前為止,我有以下內容:
Dim pvt As PivotTable
Dim pvtField As PivotField
Set pvt = ActiveSheet.PivotTables("MyPivotTable")
Set pvtField = pvt.PivotFields("MyPivotColumnTopField")
'First refresh the table
pvt.RefreshTable
'Clear Out Any Previous Filtering
pvtField.ClearAllFilters
'Add the less than filter
pvtField.PivotFilters.Add xlValueIsLessThan, Value1:="1000"
但是我在嘗試添加過濾器的行上收到Invalid Procedure call or argument
錯誤。
我也嘗試過:
pvtField.PivotFilters.Add(xlValueIsLessThan, Value1:="1000")
但是會收到語法錯誤。
我正在https://msdn.microsoft.com/zh-cn/vba/excel-vba/articles/pivotfilters-add-method-excel上查看文檔,但無法弄清楚。
您正在使用.Add,但您應該根據該鏈接使用.Add2。
pf.PivotFilters.Add2 Type:=xlCaptionIsLessThan, Value1:=1000
(我注意到鏈接的頂部語法正確,但底部語法錯誤)。
通常,解決此類語法最簡單的方法是啟動宏記錄器,手動執行操作,然后檢查代碼。 在這種情況下,這是有問題的。 例如,如果我從右下方顯示的數據透視表開始:
...然后清除所有過濾器,然后再設置標簽過濾器:
...然后我得到想要的確切結果:
...我得到以下代碼:
Sub Macro6()
ActiveSheet.PivotTables("PivotTable1").PivotFields("Test").ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields("Test").PivotFilters.Add2 _
Type:=xlCaptionIsLessThan, Value1:="11"
End Sub
但是奇怪的是,當我運行該代碼時,我得到了:
盡管宏錄制吐出一個字符串,即“11”與11碼的事實,你不希望在一個字符串飼料。 為何宏記錄器會告訴您其他原因,這超出了我的范圍。
基於@jeffreyweir的答案(為我做了一個基於字符串的過濾器),這是一個將.Add2
與基於字符串的過濾器和數值過濾器結合使用的工作示例。
這是我在每個按鈕后面的代碼:
Sub Button1_Click()
Dim pf As PivotField
Set pf = ActiveSheet.PivotTables("PivotTable1").PivotFields("Numbers")
pf.ClearAllFilters
pf.PivotFilters.Add2 Type:=xlCaptionIsLessThan, Value1:="11"
End Sub
Sub Button2_Click()
Dim pf As PivotField
Set pf = ActiveSheet.PivotTables("PivotTable1").PivotFields("Numbers")
pf.ClearAllFilters
pf.PivotFilters.Add2 Type:=xlCaptionIsLessThan, Value1:=11
End Sub
Sub Button3_Click()
Dim pf As PivotField
Set pf = ActiveSheet.PivotTables("PivotTable1").PivotFields("Numbers")
pf.ClearAllFilters
End Sub
注意:
Button1
是Show < "11"
按鈕,它執行基於字符串的過濾器 Button2
是Show < 11
按鈕,它執行數字過濾 Button3
是“ Show All
按鈕,可刪除過濾器 當我單擊Show < "11"
按鈕(即Button1)時,得到以下結果:
當我單擊Show < 11
按鈕(即Button2)時,得到以下(期望的)結果:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.