从Excel中删除不需要的文本

时间:2018-06-05 18:43:23

标签: excel vba excel-vba

我目前有一个VBA代码按顺序运行,以消除我的Excel数据表中的文本。我遇到问题的地方是我在Pear的行,在数据集中,Pear有时会出现在Pear和Pineapples的一个单元格中。因此,当我运行此代码时,它将删除梨出现的任何地方。我希望代码只在单独使用时消除它。

对于苹果和香蕉,如果与另一种水果一起出现,如果被删除则没关系,只有梨需要这个限制。

Sub DeleteMultipleRows()
        Call DeleteRows(ActiveSheet.Range("A1:A65536"), "Apple")
        Call DeleteRows(ActiveSheet.Range("A1:A65536"), "Banana")
        Call DeleteRows(ActiveSheet.Range("I1:I65536"), "Pear")
End Sub

Sub DeleteRows(ByVal rng As Range, ByVal term As String)
    Dim c As Range
    Do
        Set c = rng.Find(term, LookIn:=xlValues, lookat:=xlPart)
        If Not c Is Nothing Then c.EntireRow.Delete
    Loop While Not c Is Nothing
End Sub

1 个答案:

答案 0 :(得分:2)

您可以向DeleteRows子项添加可选参数,以便更好地控制其行为:

Sub DeleteMultipleRows()
        DeleteRows ActiveSheet.Range("A1:A65536"), "Apple"
        DeleteRows ActiveSheet.Range("A1:A65536"), "Banana"
        DeleteRows ActiveSheet.Range("I1:I65536"), "Pear", False
End Sub

Sub DeleteRows(ByVal rng As Range, ByVal term As String, _
               Optional LookAtPart As Boolean = True)
    Dim c As Range
    Do
        Set c = rng.Find(term, LookIn:=xlValues, _
                         lookat:=IIf(LookAtPart, xlPart, xlWhole))
        If Not c Is Nothing Then c.EntireRow.Delete
    Loop While Not c Is Nothing
End Sub