如果单元格值与正则表达式不匹配,我想在excel中使用宏删除行。 更具体地说,如果单元格值不是以数字开头,请删除整行
示例
在宏之前
宏之后
因此,我一直在尝试使用.AutoFilter将论坛中的一些代码整理在一起,但我认为它不以正则表达式对象作为条件,而只是字符串。。
Sub test()
Dim table As Range
Dim ws As Worksheet
Dim upperLeft As Range
Dim digitOnly As Object
Set digitOnly = CreateObject("vbscript.regexp")
digitOnly.Pattern = "^[\d]"
digitOnly.Ignorecase = True
Set ws = ActiveSheet
Set upperLeft = ws.Range("A2")
Set table = upperLeft.CurrentRegion
With table
.AutoFilter Field:=1, Criteria1:=digitOnly
.Offset(1, 0).EntireRow.Delete
End With
End Sub
有人可以提出其他建议,或者告诉我我做错了什么吗?谢谢:)。
答案 0 :(得分:0)
类似的东西:
Sub test()
Dim table As Range, c As Range
Dim ws As Worksheet
Set ws = ActiveSheet
Set table = ws.Range("A2").CurrentRegion
For i = table.columns(1).cells.count to 2 Step -1
With table.columns(1).cells(i)
If Not .Value like "#*" then .EntireRow.Delete
End with
Next i
End Sub
答案 1 :(得分:0)
按照@PaichengWu的建议,我使用他的LIKE表达式并阅读了其他一些相关的posts:
Sub DeleteRow()
Dim i As Integer
For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
If Not Range("A" & i).Value Like "#*" Then
Range("A" & i).EntireRow.Delete
End If
Next i
End Sub
快乐的小伙子:) 谢谢。