循环过滤多个变量值

时间:2019-03-15 14:29:56

标签: excel vba

我正在尝试使用数组来过滤多个值,而不用对数据进行硬编码。我想创建一个循环,该循环将遍历每个条件具有可变大小(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等。

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发布的文章后,我已经更新了代码。这是代码:它将在ar2中存储“ A”和“ B”,但我不知道如何将其用作第一个数组将用于过滤哪些项目的标准。

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

1 个答案:

答案 0 :(得分:1)

使用类似tihs

Dim ar(1 to 20, 1) As String

这将使“桌子”下移21张,对位2张

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

请查看this resource,以获得有关多维数组的精彩文章