基于值的列在Excel VBA中过滤表(Filter table in excel VBA base

2019-08-22 10:45发布

我有一个表,我想的价值观在其列之一来过滤行。 用于过滤的值被存储在表中没有一个单独的列。 这是我到目前为止有:

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

编辑:我已经能够做range1.Value然后转换的变体进入一个字符串数组,让我的取值范围为Array。 因为我想它,因为它只是设置我的过滤器在我的数组的最后一个值并没有工作。 例如,如果我的数组包含的ID(“12”,“44”,“13”,“22”)和I设置标准1到阵列并运行它,过滤器只已22选择和所有其它号码被取消选择,包括12,44和13。

Answer 1:

我想到了! 我曾试图重新编码,但我第一次尝试它,它给了我一个不完整的程序由于与一行代码相关联的行数太多。 所以我重做了记录给我整个代码和原来我失去了一些东西。 这里是整个代码:

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”是我从录制宏的第一时间,因为记录停止过早地错过了关键部分



文章来源: Filter table in excel VBA based on a column of values