excel-vba – 基于一列值在excel VBA中过滤表

我有一个表,我想通过其中一列中的值过滤行.用于过滤的值存储在不在表中的单独列中.这是我到目前为止:

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”),但我需要它等于range1给出的范围内指定的值.任何帮助将不胜感激.

编辑:通过执行range1.Value然后将Variant转换为字符串数组,我已经能够将我的范围值放入数组中.这不是我想要的,因为它只是将我的Filter设置为我的数组中的最后一个值.例如,如果我的数组包含ID(“12”,“44”,“13”,“22”)并且我将Criteria1设置为该数组并运行它,则过滤器仅选择22并且取消选择所有其他数字,包括12,44和13.

最佳答案
我想到了!我曾尝试重新编码,但是第一次尝试重新编码时,由于与一行代码相关的行太多,它给了我一个不完整的程序.所以我重新录制了录音,给了我整个代码,原来我错过了一些东西.这是整个代码:

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

“运算符:= xlFilterValues”是我第一次录制宏时错过的关键部分,因为录制已经过早停止

转载注明原文:excel-vba – 基于一列值在excel VBA中过滤表 - 代码日志