将Excel行作为数组传递给autofilter

时间:2015-07-20 13:32:24

标签: vba excel-vba excel

在sheet1中,我有4行标题为“公司名称”,其值为“Google”,“Microsoft”,Yahoo“ 现在在sheet2中我需要设置一个包含这3个值的过滤器

ActiveSheet.Range(A1:AC20).AutoFilter Field:=4, Criteria1:=Array("Google", "Microsoft","Yahoo"), Operator:=xlFilterValues

但是现在我希望它是动态的,以便我将在sheet1中使用公司名称创建一个数组,并在sheet2中传递此列表以进行过滤。

这样的东西
comp_name_array = Range(A1:A5) 

这将创建包含所有公司名称的数组,然后在

中传递此数组
ActiveSheet.Range(A1:AC20).AutoFilter Field:=4, Criteria1:=Array(comp_name_array), Operator:=xlFilterValues

1 个答案:

答案 0 :(得分:2)

您需要转置该范围以制作一维数组。因为变量是一个数组,所以你不需要Array()函数:

comp_name_array = Application.Transpose(Range(A1:A5).Value)
ActiveSheet.Range(A1:AC20).AutoFilter Field:=4, Criteria1:=comp_name_array, Operator:=xlFilterValues