如何编写宏来按多个值过滤整个工作簿中的列?

时间:2015-08-24 18:29:42

标签: excel vba excel-vba

大家好,我有一个问题,我已经考虑过逻辑,但不确定如何编写MACRO。

我在工作中提取数据,我们只关心某些项目的过滤表。所有项目始终位于同一列K中,该列标题为活动状态,第一个值始终从第15行开始。

我们需要的例子是过滤未开始,未开始,和正在处理 问题是有大约50张要做的事情。我知道通过开发一个宏,这是一种更简单的方法。

Dim wSheet As Worksheet
For Each wSheet IN Worksheets
wSheet.ColumnK.Row15.Filter(Not Started, Started, In Process);
Next wSheet

1 个答案:

答案 0 :(得分:2)

如果要使用AutoFilter Method过滤两个以上的值,则必须传入一个数组。

Array

请注意,dim w as long, v as variant v = array("Not Started", "Started", "In Process") for w=1 to worksheets.count with worksheets(w) if .autofiltermode then .autofiltermode = false with .range(.cells(14, "K"), .cells(rows.count, "K").end(xlup)) .autofilter field:=1, criteria1:=(v), Operator:=xlFilterValues end with end with next w 位于括号内。如果您首先将数组构建为var,那么在用作(v)时需要将其包装在括号中,以便正确地确定它是一个数组。