这段代码含义和上一段代码含义和作用一样,那为什么要写得更复杂呢?这是因为如果你写参数时严格按照Autofilter的顺序来表达每个参数,可以写成第一段代码形式,但是实际工作中大家不会需要所有字段,书写顺序也不一定严格按照Autofilter的顺序来写,为避免参数设定错误,将参数具体对应设定比较安全,同时代码可读性也更好。
Case2.筛选动态区域里的参数结果:
'选择啤酒字段的所有值
Worksheets(“Data”).range(“A1”,[C1].end(xldown)).Autofilter _
(Field:=2,Criteria1:=“啤酒”,Operator:=xlFilterValues)
这段代码和Case 1最大不同就是筛选范围是动态的,即A列和C列包含数据的区域,需要注意的是,range(“A1”,[C1].end(xldown))来表示活动区域时,如果运行的工作表不止一个,需要写成range(“A1”,sheets(“Data”).[C1].end(xldown)).
当有Criteria2时,与Criteria1 类似,在Autofilter里加进去即可,就可以用2个条件进行复合筛选;
'选择啤酒,面包字段的所有值
Worksheets(“Data”).range(“A1”,[C1].end(xldown)).Autofilter _
(Field:=2,Criteria1:=“啤酒”,Operator:=xlOr,Criteria2:=“面包”)