是否可以根据两个通配符标准过滤工作表。
我想从我的日期中删除所有行,其中 C 列中的标识号不以 1 或 4 开头。过滤和删除后,我想再次显示所有数据,并且两者之间没有空白行
这甚至可能吗?我尝试了很多东西。我发布了 2 个我认为最有可能起作用的选项 - 但没有。非常感谢任何信息。
With ActiveSheet
'FIRST TRY
.AutoFilter Field:=3, Criteria1:="<>1*", Operator:=xlOr, Criteria2:="<>4*"
'SECOND TRY
.AutoFilter Field:=3, Criteria1:=Array( _
"<>1*", "<>4*"), Operator:=xlFilterValues
'THEN I WANT ALL ROWS THAT DONT START WITH 1 OR 6 DELETED
.Offset(1).SpecialCells(xlVisible).EntireRow.Delete
End With
最佳答案
正如 Tim Williams 在评论中提到的,您不能将文本过滤器应用于数字列。在这两种情况下,我个人都不会为此使用过滤器,因为有一种非常简单的 VBA 方法:
Dim current As Long
Dim sheet As Worksheet
Dim start As String
Set sheet = ActiveSheet
With sheet
For current = .UsedRange.Rows.Count To 2 Step -1
start = Left$(.Cells(current, 3), 1)
If start <> "1" And start <> "4" Then
.Rows(current).Delete
End If
Next
End With
编辑:如果工作表已排序,则行删除速度会快很多,因为您可以跟踪需要删除的范围的开始和结束,而不是删除潜在的数千个单独的行:
Dim current As Long
Dim sheet As Worksheet
Dim start As String
Dim bottom As Long
With sheet
For current = .UsedRange.Rows.Count To 2 Step -1
start = Left$(.Cells(current, 3), 1)
If start <> "1" And start <> "4" And bottom = 0 Then
bottom = current
ElseIf (start = "1" Or start = "4") And bottom <> 0 Then
.Range((current + 1) & ":" & bottom).Delete
bottom = 0
End If
Next
End With
关于vba - 过滤 2 个不相等的通配符。可能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33577317/