我的Excel文件中有三列当前正在自动筛选。我的任务是设置多个过滤器。我开始的方式是使用ActiveX复选框构建一个选项“菜单”,并将“链接单元”属性分配给右侧的单元格。因此,如果选中第一个选项,则单元格BB30显示“TRUE”。
问题始于第一列有16个项目,第二列有11个项目,第3个列有5个。我老板希望它工作的方式是从第1列和第1列中选择2个选项从第2列开始,它会过滤该信息的数据(单独的表格)。
示例数据:
Column A Column B Column C
-------- -------- --------
aCol1 bCol1 cCol1
aCol2 bCol2 cCol2
aCol3 bCol3 cCol3
aCol4 bCol4 cCol4
aCol5 bCol5 cCol5
aCol6 bCol6
aCol7 bCol7
aCol8 bCol8
etc. etc.
因此,如果我选择aCol1
,aCol2
和bCol3
- 我们要过滤(ACOL1 ='TRUE'或ACOL2 ='TRUE')和BCOL3 ='TRUE '然后过滤数据。
我做了一些搜索,似乎使用SELECT CASE是要走的路,但这会给我800多个不同的场景......更不用说如果没有选择某个列的任何内容(只有aCol1
和例如,bCol8
被选中。
有更好的方法吗?
如果我必须为每个场景编写一个单独的CASE语句,Excel 2010会处理那么多吗?
最后,一旦我确定了所有选择的内容,我该如何编写VBA以使其真正做到这一点?
答案 0 :(得分:0)
不要写一个选择块。
您要做的是遍历每一列,如果值为true,则添加一个带有相关值的自动过滤器。您可以为每个列执行此操作,并根据您的需要进行过滤。
至于如何使用VBA完成此操作,您只需使用该范围并使用要过滤的值调用AutoFilter()
方法。我假设你对VBA知之甚少。
Range("A1:Dx").AutoFilter Field:=x, Value:=x