excel - 根据一个字母删除行

标签 excel vba

需要有关我的代码的帮助。 在(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/

相关文章:

excel - 在 Excel VBA 中将一个变体分配给另一个变体

Java - 追加Excel

excel - 以编程方式注释 Excel 图表

excel - 如果 B 列不为空,则在 C 列中插入公式

excel - 如果单元格值更改,则仅将单元格值更改的列复制到另一个工作表,但针对两个工作表中的公共(public)值

vba - Excel vba将值从一张表更改为另一张表

c# - 如何在 Excel 共享插件中使用对话框

excel - 使用 Power Query (Excel 2016) 检索 Power Query 表元数据

VBA 类。调用具有多个参数和静态函数的方法

sql - 在执行 CopyFromRecordset 时如何让 Excel 将日期视为日期而不是字符串