[英]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.