gpt4 book ai didi

Excel VBA 自动筛选除三个之外的所有内容

转载 作者:行者123 更新时间:2023-12-03 00:27:48 25 4
gpt4 key购买 nike

在我的数据分析( First Question )的持续传奇中,我想删除部门(字段 7)不是 101、102 或 103 的所有行(名称已更改以保护无辜者)。数据中有大约一百个部门,因此使用 Criteria1:=Array("104", "105", "106", 等是不切实际的。

我想做这样的事情:

myrange.AutoFilter Field:=7, Criteria1:="<>101", Operator:=xlOr, _
Criteria2:="<>102", Operator:=xlOr, Criteria3:="<>103"

但 Excel 不能识别超过 2 个条件。我可以添加一个辅助列,并让宏运行每一行(如果是 101、102 或 103,则值=是),过滤掉"is",然后删除剩余的所有内容,但我将其保存为最后一个度假村。

有没有办法自动过滤 Criteria1 不等于数组?像这样的东西:

myrange.AutoFilter Field:=7, Criteria1:="<>" & Array("101", "102", "103")

最佳答案

记住目标是删除不匹配的行;自动筛选只是帮助实现这一目标的工具之一。如果自动筛选不能满足您的需求,请选择其他方法。考虑:

Sub AllBut()
Dim rTable As Range, r As Range
Dim rDelete As Range
Set rTable = Selection
Set rDelete = Nothing
For Each r In rTable.Columns(7).Cells
v = r.Value
If v <> "101" And v <> "102" And v <> "103" Then
If rDelete Is Nothing Then
Set rDelete = r
Else
Set rDelete = Union(r, rDelete)
End If
End If
Next

If Not rDelete Is Nothing Then rDelete.EntireRow.Delete
End Sub

这里我们选择要处理的数据 block (不包括标题行)。该宏向下扫描该 block 的第 7 列,并删除任何不符合条件的行。

剩下的只有 101、102 和 103。

关于Excel VBA 自动筛选除三个之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19497659/

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