需要有关我的代码的帮助。 在(C 列)中,我有值 MG01、MG02a、MG02b、MG02c。并且在(A 列)中具有不同的值。如果 A 列中的值为“1”,则代码需要删除行并且 如果它在文本末尾找到字母,例如 b、c、d、e、...,则在 C 列中。
并且“c”代码无法识别MG02c,请帮忙。
Sub xDeleteRowz()
Last = Cells(Rows.Count, "A").End(xlUp).Row
For i = Last To 1 Step -1
If (Cells(i, "A").Value) = "1" And (Cells(i, "C").Value) = "*c*" Then
Cells(i, "A").EntireRow.Delete
End If
Next i
End Sub
最佳答案
这听起来更适合正则表达式:
Sub xDeleteRowz()
Last = Cells(Rows.Count, "A").End(xlUp).Row
With CreateObject("VBScript.RegExp")
.Pattern = "MG\d{2}[a-z]"
.IgnoreCase = False
For i = Last To 1 Step -1
If (Cells(i, "A").Value) = "1" And .Test(Cells(i, "C").Value) Then
Cells(i, "A").EntireRow.Delete
End If
Next i
End With
End Sub
请注意,表达式要求值以 MG## 开头。如果值的开头可能不同,请替换此行...
.Pattern = "MG\d{2}[a-z]"
...与...
.Pattern = ".+[a-z]"
...它将匹配末尾带有小写字母的任何内容。您还可以通过更改括号内的范围来限制特定字母。即,如果只有“a”到“g”,则为:
.Pattern = ".+[a-g]"
关于excel - 根据一个字母删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39110147/