【问题标题】:Excel VBA: how to set variable equal to filter criteria?Excel VBA:如何设置变量等于过滤条件?
【发布时间】:2021-09-12 23:15:13
【问题描述】:

我正在尝试将变量设置为 x 以等于表中过滤器设置的条件。 x = ?

Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter _
 Field:=1, _
 Criteria1:=Array("1", "3", "Seattle", "Redmond"), _
 Operator:=xlFilterValues

我将如何获得: x = 1、3、西雅图、雷德蒙德 要么 x = 标准 1 ???

【问题讨论】:

  • 您可以先将 x 定义为数组变量,然后将该变量用作条件。还是您想从表格中读取未知标准?

标签: excel vba variables filter criteria


【解决方案1】:

通过下面的示例,您应该能够设置一个 Filter 对象并像处理普通数组一样循环遍历它,以便检索值。 下面的示例将它们加入到 sCrit 变量中,但当然您可以将其更改为您需要的任何内容。

只需将 lCol 变量设置为过滤范围的列号 你应该很高兴。

 Dim filt As Filter   'filters object
 Dim lCol As Long     'column in autofilter range on which the filter is applied
 Dim i As Long
 Dim sCrit As String

 With Worksheets("Sheet1")
     If .AutoFilterMode Then                    ''if Autofilter is enabled
         If .AutoFilter.Filters(lCol).On Then   ''if a filter is active

             Set filt = sh.AutoFilter.Filters(lCol) 

             For i = LBound(filt.Criteria1) To UBound(filt.Criteria1)
                 sCrit = sCrit & filt.Criteria1(i) & ", "
             Next i

         End if
     End if
 End With 

【讨论】:

  • 太棒了,谢谢!我只是无法将 lCol 变量设置为过滤范围的列号。如果我在 Sheet1 中使用 Table1 并且表格在 B 列中,那么我该如何设置它,标题在 B2 中并且数据在 B3:B6 中?谢谢你的帮助
  • 如果我没记错的话,它从表格/范围的第一列开始计算;因此,如果过滤范围从 B 列开始,则 lCol = 1。顺便说一句,如果您使用的是实际表(而不是应用了自动过滤器的范围),则应将 .AutofilterMode 更改为 .FilterMode 以使其工作.
猜你喜欢
  • 1970-01-01
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
  • 2015-03-28
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多