数组自动过滤条件

时间:2017-09-27 17:51:38

标签: arrays excel-vba autofilter vba excel

我一直在寻找解决方案,无法在网上找到任何可以完全解释发生了什么的内容。我查看了其他一些帖子,但它们似乎都有点短暂。

当我运行这段代码时,它可以完美地工作(因为它已被记录)。

ActiveSheet.Range("$A$1:$AL$1002").AutoFilter Field:=17, Criteria1:=Array( _
    "73578", "78759", "78765"), Operator:=xlFilterValues

但是当我试图让它变得更强大时,它失败了。我想将Criteria1参数更改为已存储的数组。

我正在努力让以下工作。

ActiveSheet.Range("$A$1:$AL$1002").AutoFilter Field:=17, _
    Criteria1:=Array(StoredArray.Values), Operator:=xlFilterValues

Array values

我存储了数组并且我操纵它但是我还没有得到任何工作。我也尝试创建一个与录制的宏完全相同的字符串,但这也不起作用。

Dim StoredArrayString as Variant
StoredArrayString = "73578"", ""78759"", ""78765"
ActiveSheet.Range("$A$1:$AL$1002").AutoFilter Field:=17, _
        Criteria1:=StoredArrayString, Operator:=xlFilterValues

感谢您的帮助,我花了很多时间在MSDN上试图研究这个问题,但无法找到解决方案。

3 个答案:

答案 0 :(得分:1)

我认为您的问题在于您如何定义阵列。试试这个。

Dim StoredArrayString As Variant
StoredArrayString = Array("73578", "78759", "78765")
ActiveSheet.Range("$A$1:$AL$1002").AutoFilter Field:=17, _
        Criteria1:=StoredArrayString, Operator:=xlFilterValues

答案 1 :(得分:0)

从:

开始

enter image description here

并运行:

Sub Macro7()
    Dim ary(1 To 3) As String
    ary(1) = "Alice"
    ary(2) = "Boris"
    ary(3) = "James"
    ActiveSheet.Range("$A$1:$D$22").AutoFilter Field:=3, Criteria1:=ary, Operator:=xlFilterValues
End Sub

将产生:

enter image description here

答案 2 :(得分:0)

我也有类似的问题。

我正在尝试使用数组作为标准,但我的标准(目前为 1/1/2023)是动态的并且位于另一个工作表中。例如,如何获取代码以从其他工作表 (Sheet3) 中选取此条件。

'
' data_test_2 Macro
'

'
    With Worksheets("LNG_PORTFOLIO_2023_SG_HIST").Range("A1")
    .AutoFilter Field:=28, Operator:=xlFilterValues, Criteria2:=Array(1, "1/1/2023")

End With
End Sub```