【问题标题】:Replacing VBA filter array with custom array用自定义数组替换 VBA 过滤器数组
【发布时间】:2021-08-26 18:59:02
【问题描述】:

我有一个数组,其中包含一些使数组范围无效的单元格。我已经存储了数据以过滤掉受影响的行,但是当在过滤器中替换数组时,它要么过滤所有内容,要么什么都不过滤。

 For i = LBound(SOS_array1) To UBound(SOS_array1)
    filter1(i) = CStr(SOS_array1(i, 1))
Next i

Sheets("NSR " & NSR1).Select
ActiveSheet.Range("$A$A:$T$T").AutoFilter Field:=4, Criteria1:=Array(Join(filter1, ",")), _
                                            Operator:=xlFilterValues

其中Sos_array1是要过滤为整数的数据,filter1是转换为字符串的数据。

【问题讨论】:

  • 当您尝试Criteria1:=Join(filter1, ",") 而不使用Array( 时会发生什么?
  • 正确的是 Criteria1:=filter1 因为 filter1 本身就是一个数组 - 请参阅 Range.AutoFilter method 中的示例
  • 运行 'Criteria1:=filter1' 不会对工作表应用任何过滤器。 @АлексейР
  • Running Criteria1:=Join(filter1, ",") 也不会对工作表应用任何过滤器。 @托德尔森
  • @Acbischoff 这是因为 Range("$A$A:$T$T") 的地址不正确。

标签: arrays vba filtering


【解决方案1】:

尝试类似:

Sheets("NSR " & NSR1).Range("A:T").AutoFilter Field:=4, Criteria1:=filter1, Operator:=xlFilterValues

或者,更好:

Sheets("NSR " & NSR1).Range("A1").CurrentRegion.AutoFilter Field:=4, Criteria1:=filter1, Operator:=xlFilterValues

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 2015-12-26
    • 2016-07-09
    • 2018-05-24
    • 1970-01-01
    相关资源
    最近更新 更多