VBA脚本在列中搜索字符串并删除包含该字符串的整行?

时间:2019-01-14 12:28:02

标签: excel vba

我有约100行,约有10列。如果列B(或2)中的单元格包含特定的字符串“ XYZ”(例如),我想删除整行

如果字符串以开头出现,则下面的代码可以完美地工作。 但我也希望它能在以下情况下工作:

  1. “ XYZadjsaoda”(案例1:字符串的开头)
  2. “ asdsalXYZasdsa”(案例2:字符串的中间)
  3. “ dsadsad32XYZ”(情况3:字符串的结尾)

如果存在该字符串,则应删除整行。

Sub DeleteRowBasedOnCriteria()
    Dim RowToTest As Long
    Sheets("Jira").Select
    For RowToTest = Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
        With Cells(RowToTest, 2)
            If .Value = "XYZ" _        
            Then _
            Rows(RowToTest).EntireRow.Delete
        End With
    Next RowToTest
End Sub

该功能应与XYZ匹配,而与单元格中的位置无关,并删除整行。

2 个答案:

答案 0 :(得分:2)

将Like运算符与通配符一起使用(可能也具有案例限定符)。

不过,自动筛选可能是更好的选择。

Sub DeleteRowBasedOnCriteria()
Dim RowToTest As Long
Sheets("Jira").Select
For RowToTest = Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
    With Cells(RowToTest, 2)
        If .Value Like "*XYZ*" Then Rows(RowToTest).EntireRow.Delete
        'If ucase(.Value) Like "*XYZ*" Then Rows(RowToTest).EntireRow.Delete  CASE INSENSITIVE 
    End With
Next RowToTest
End Sub

答案 1 :(得分:1)

除了Like运算符外,您还可以使用InStr function

If InStr(1, "XYZ", .Value, vbTextCompare) > 0 Then

您可以使用...

  • vbTextCompare以使其不区分大小写。
  • vbBinaryCompare使其区分大小写。