如何为AutoFilter从工作表单元格定义数组(替代硬编码)
从工作表单元格获取数据定义AutoFilter筛选数组
把硬编码的数组替换成从指定单元格读取数据,只需两步:读取单元格区域、转成AutoFilter支持的一维数组。
修改后的完整代码
Dim arr As Variant ' 从存储数据的工作表(示例为Sheet1)A1:A3读取文本值,转成一维数组 arr = Application.Transpose(Sheet1.Range("A1:A3").Text) Sheet17.Range("E1").AutoFilter _ Field:=5, _ Criteria1:=arr, _ Operator:=xlFilterValues
关键说明
- 单元格区域的
.Value或.Text返回的是二维数组(结构为(行号,列号)),而AutoFilter的Criteria1要求一维数组,所以用Application.Transpose转换格式。 - 若单元格是数字且你需要筛选数字,把
.Text换成.Value即可;如果要统一用字符串筛选,保留.Text更稳妥。 - 记得把
Sheet1改成你实际存放A1:A3数据的工作表名称/代码名。
内容的提问来源于stack exchange,提问作者Kevin Lewis
相关产品推荐
相关产品推荐

