首页 > 解决方案 > 在循环中过滤多个变量值

问题描述

我正在尝试使用数组来过滤多个值而不对数据进行硬编码。我想创建一个循环,该循环将遍历每个条件具有可变大小(1 个标准或 3 个标准)的列表。以下是数据的示例:

 A    B
100   A
200   A
300   B
400   B
500   B
600   B
700   C

我希望代码采用与“A”相关的所有值 - 因此,将 100 和 200 用作过滤的值,然后使用与“B”相关的所有值 - 300、400 和 500 以及ETC..

Sub FilterMulti2()
Dim i As Integer
Dim ar(1 To 20) As String

For i = 2 To ThisWorkbook.Worksheets("Sheet1").Range("A10000").End(xlUp).Row + 1

ar(i - 1) = Sheet1.Range("A" & i - 1)
Next i

ThisWorkbook.Worksheets("Sheet2").Range("A1").AutoFilter 4, ar, xlFilterValues
'Code****

ThisWorkbook.Worksheets("Sheet2").Range("A1").AutoFilter
End Sub

目前我的代码只适用于一个列表,但我需要进一步制作它,以便代码区分要过滤的项目。

谢谢

编辑:所以我在查看@badja 发布的文章后更新了代码。这是代码:它将'A's和'B's存储在ar2中,但我不知道我如何使用它作为第一个数组将用于过滤哪些项目的标准。

Sub FilterMulti2()
Dim i As Integer
Dim ar(40) As Variant
Dim ar2(40) As Variant
For i = 2 To ThisWorkbook.Worksheets("Sheet1").Range("A10000").End(xlUp).Row + 1

ar(i - 1) = Sheet1.Range("A" & i - 1)
ar2(i - 1) = Sheet1.Range("B" & i - 1)
Next i

ThisWorkbook.Worksheets("Sheet2").Range("A1").AutoFilter 4, ar, xlFilterValues
'Code****

ThisWorkbook.Worksheets("Sheet2").Range("A1").AutoFilter 'Turn autofilter Off
End Sub

标签: excelvba

解决方案


使用类似 tihs 的东西

Dim ar(1 to 20, 1) As String

这将使“表”向下 21 和 2

我以前没有使用过这些数组,但基本上它们都是花哨的表

请查看此资源以获取有关多维数组的精彩文章


推荐阅读