用于动态数组筛选的Excel宏出错

rbl8hiat  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(77)

我有一条很好用的线

ActiveSheet.Range("A6").AutoFilter Field:=6, Criteria1:=Array("13.1", "13.2", "13.3", "13.4", "13.5"), Operator:=xlFilterValues

字符串
问题是,这不是动态的,我尝试了许多方法,使这个动态的,但都失败了,我想这些值是从活动单元格Q1,R1,S1,T1,U1,V1。
但我使用的任何方法都只会过滤前两个,而不是全部。

2sbarzqh

2sbarzqh1#

好吧,你可以(直接)提取一个数组用作Criteria。但是数组元素必须是字符串,即使过滤后的列包含数字.
请尝试下一种方式:

Sub testFilteringCol5()
  Dim arrCrit() As Variant, i As Long
  
  arrCrit = Range("Q1:V1").value 'place the range in an array

  'cast each array element to string:
  For i = 1 To UBound(arrCrit, 2): arrCrit(1, i) = CStr(arrCrit(1, i)): Next i
  
  'use the strings array as `Criteria1` (columns headers must exist on the 6th row):
  ActiveSheet.Range("A6").AutoFilter field:=6, Criteria1:=arrCrit, Operator:=xlFilterValues
End Sub

字符串
请在测试后发送一些反馈。

相关问题