我有一个表,我希望按其中一列中的值过滤行。用于过滤的值存储在不在表中的单独列中。这就是我到目前为止所做的:
Dim table1 As ListObject
Dim range1 As Range
Set range1 = ActiveSheet.range("AM23:AM184")
'get table object
table1.range.AutoFilter Field:=3, Criteria1:=???
我不知道为标准1放什么。我知道它需要是一个数组,我可以将其设置为类似数组(" 12"," 2"," 13")但我需要它to equal是range1给出的范围中指定的值。任何帮助将不胜感激。
编辑:通过执行range1.Value然后将Variant转换为字符串数组,我已经能够将我的范围值放入数组中。这不是我想要的,因为它只是将我的Filter设置为我的数组中的最后一个值。例如,如果我的数组包含ID(" 12"," 44"," 13"," 22"),我设置了Criteria1对于该数组并运行它,过滤器只选择了22个,取消选择所有其他数字,包括12,44和13。
答案 0 :(得分:14)
我明白了!我曾尝试重新编码,但是第一次尝试重新编码时,由于与一行代码相关的行太多,它给了我一个不完整的程序。所以我重新录制了录音,给了我整个代码,结果发现我错过了一些东西。这是完整的代码:
Dim range1 As range
Set range1 = ActiveSheet.range("AM23:AM184")
Dim var1 As Variant
Dim sArray() As String
Dim i As Long
var1 = range1.Value
ReDim sArray(1 To UBound(var1))
For i = 1 To (UBound(var1))
sArray(i) = var1(i, 1)
Next
ActiveSheet.ListObjects("Table1").range.AutoFilter Field:=3, Criteria1:=sArray, Operator:=xlFilterValues
“Operator:= xlFilterValues”是我第一次录制宏时错过的关键部分,因为录制已经过早停止