使用Excel VBA自动过滤数据透视表和非数据透视列

时间:2018-03-13 11:04:39

标签: excel vba excel-vba

我有一个从B列到N列的数据透视表。在左边的A列中,有一些数据,我使用数据透视表中的内容来查找某些值。在右侧,在O到X列中,还有一些其他数据是根据数据透视表的内容计算的。

我需要过滤列X = 1然后列V = 0.以下是我的代码:

Dim ws As Worksheet, LastCell As Long

Set ws= ThisWorkbook.Worksheets("Sheet1")
LastCell = ws.Cells(Rows.Count, 2).End(xlUp).Row  

ws.Range("$A$4:$X$" & LastCell).AutoFilter Field:=24, Criteria1:="1"
ws.Range("$A$4:$X$" & LastCell).AutoFilter Field:=22, Criteria1:="0"

问题是,我得到“运行时错误'1004':Range类的AutoFilter方法失败”。

但是我从记录宏中获得的代码也不是那么遥远,我只是添加了自己的变量:

ActiveSheet.Range("$A$4:$X$900").AutoFilter Field:=24, Criteria1:="1"
ActiveSheet.Range("$A$4:$X$900").AutoFilter Field:=22, Criteria1:="0"

之后我尝试回溯录制的代码,我得到了同样的错误。造成这种情况的原因是什么?如何解决?

提前致谢!

1 个答案:

答案 0 :(得分:0)

Welp,我在尝试探索其他一些想法后得到了答案。

而不是使用:

ws.Range("A4:X" & LastCell).AutoFilter Field:=24, Criteria1:="1"
ws.Range("A4:X" & LastCell).AutoFilter Field:=22, Criteria1:="0"

我用过:

ws.Range("A4").AutoFilter Field:=24, Criteria1:="1"
ws.Range("A4").AutoFilter Field:=22, Criteria1:="0"

我注意到了这一点,因为我试图在Excel上手动使用自动过滤器。我突出显示了整个数据,但无法单击过滤器按钮。通常情况下,您只选择一个单元格还是整个工作表并不重要,但由于我也在数据透视表上使用自动过滤器,因此我能够使用它的唯一方法是选择任何其他单元格而不是数据透视表。