vba - 使用范围数组的多个条件自动过滤

标签 vba excel

来自问题Excel macro filter based on multiple cell values并使用来自 Creating an Array from a Range in VBA 的答案

我正在尝试使用数组为广泛的范围创建一个自动过滤器。 但是,它一直只使用数组范围内的最新值。

如何使用过滤器中的所有值?

Sub Test()

Dim DirArray As Variant
DirArray = [A2:A5].Value2
ActiveSheet.range("$B$1:$C$10").AutoFilter Field:=2, Operator:=xlFilterValues, Criteria1:=DirArray

End Sub

最佳答案

在应用使用多个数值的过滤器时记录宏表明过滤器需要一个字符串数组。

ActiveSheet.Range("$B$1:$C$11").AutoFilter Field:=2, Criteria1:=Array("1", "2", "3"), Operator:=xlFilterValues

enter image description here

注意 data = [A2:A5].Value 返回一个二维数组

enter image description here

让我们展平二维数组:data = [A2:A5].Value

enter image description here

现在我们有了一个一维数组,我们需要将它转换为字符串数组。

我们可以通过首先创建一个分隔字符串来做到这一点

 Data = Join(Data, ",")

enter image description here 然后拆分该字符串

enter image description here

   ActiveSheet.Range("$B$1:$C$11").AutoFilter Field:=2, Operator:=xlFilterValues, _
Criteria1:=Split(Join(Application.Transpose(Range("A2:A6")), ","), ",")

enter image description here

TextJoin() 确实简化了过程。

    ActiveSheet.Range("$B$1:$C$11").AutoFilter Field:=2, Operator:=xlFilterValues, _
Criteria1:=Split(WorksheetFunction.TextJoin(",", True, Range("A2:A6")), ",")

关于vba - 使用范围数组的多个条件自动过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51206261/

相关文章:

来自单元格的 VBA Web 查询

arrays - 在VBA中将范围解析为数组时下标超出范围错误

vba - 如何在Excel中找到匹配的行?

R - 对于 view_html() 我如何将限制更改为超过 100

vba - Excel VBA 中单元格注释修改命令非常慢

vba - 从 VBA 触发计算时,#GETTING_DATA 消息永远不会解析

excel - 我有 Tableau twbx 文件。如何将它们转换为 xls 或 csv 或导出数据?

excel - VBA:如何在循环中构建嵌套字典(ByVal?)

Apache POI : Partial Cell fonts

Excel 2016 用多个空格分割字符串