gpt4 book ai didi

vba - 基于范围 VBA 的过滤列

转载 作者:行者123 更新时间:2023-12-04 21:08:30 25 4
gpt4 key购买 nike

我目前正在处理来自大型机的数据,而不是 unlike the data presented here .在这种情况下,对于我的标准和目标数据集,我所拥有的只是类似于 100-AAA 的字符串。我已经搜索了类似的解决方案,但我没有找到针对 SO 上的 VBA 的范围问题的直接过滤器。

我正在尝试根据一系列标准过滤大型数据集。最初,我开始在单独的类/子例程中使用集合,但后来我压缩为在单个子例程中使用范围,如下所示:

Sub FilterTest1()

Dim RngOne As Range
Dim LastCell As Long

Sheets("Criteria").Activate
Sheets("Criteria").Select
Range("A1").Select

LastCell = Application.WorksheetFunction.CountA(ActiveSheet.Range("A:A"))

Set RngOne = ActiveSheet.Range("A2:A" & LastCell)

Sheets("Sheet 1").Activate
Sheets("Sheet 1").Select

With ActiveSheet
If .FilterMode Then
.ShowAllData
End If
End With

Columns("A:A").Select
Selection.AutoFilter
ActiveSheet.Range("A:A").AutoFilter Field:=1, Criteria1:=RngOne, Operator:=xlOr

End Sub

不幸的是,我的单元格范围没有过滤数据,即使使用诸如 Operator:=xlOr 之类的条件也是如此。 - 它只显示用于标准的最后一个单元格值。 VBA 代码不会失败 - 它只是没有根据范围正确过滤。

我确信存在一个简单的解决方案,但我不能完全看到它。

最佳答案

您当前的线路:

ActiveSheet.Range("A:A").AutoFilter Field:=1, Criteria1:=RngOne, Operator:=xlOr

正在尝试通过 Range 过滤您的第一个字段对象,而不是范围内的每个值。

我在下面提供了一种方法来执行此操作,将您的值加载到数组中,然后将数组传递给过滤条件。

值得注意的几点可以帮助您(以及将来的其他任何人):
  • 我学习了使用宏记录器过滤所选对象的正确语法。
  • 这个网站帮助我了解了数组技巧:Pass Array to Filter Criteria
  • 我还清理了您的代码,通过摆脱无用的选择语句等,使其更高效、更快。 (这点代码没什么大不了的,但摆脱这种做法会帮助你完成更大的项目!)

  • 下面的代码:
    Sub FilterTest1()

    Dim RngOne As Range, cell As Range
    Dim LastCell As Long
    Dim arrList() As String, lngCnt As Long

    With Sheets("Criteria")
    LastCell = .Range("A" & Sheets("Criteria").Rows.Count).End(xlUp).Row
    Set RngOne = .Range("A2:A" & LastCell)
    End With

    'load values into an array
    lngCnt = 0
    For Each cell In RngOne
    ReDim Preserve arrList(lngCnt)
    arrList(lngCnt) = cell.Text
    lngCnt = lngCnt + 1
    Next


    With Sheets("Sheet 1")

    If .FilterMode Then .ShowAllData

    .Range("A:A").AutoFilter Field:=1, Criteria1:=arrList, Operator:=xlFilterValues

    End With

    End Sub

    关于vba - 基于范围 VBA 的过滤列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872651/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com