Удаление нежелательного текста из Excel

Waleed Malik спросил: 12 мая 2018 в 05:03 в: excel

В настоящее время у меня код VBA работает в порядке, чтобы исключить текст из моей спецификации Excel. В области, где у меня проблема, является то, что в строке, где у меня есть груша, в наборе данных груша иногда появляется в одной клетке как груша и ананасы. И поэтому, когда я запускаю этот код, он удаляет везде, где появляется груша. Я хочу, чтобы код удалял только грушу, когда она одна.

Что касается яблока и банана, если он появляется с другим фруктом, это нормально, если он удален, только для груши мне это нужно ограничение.

Sub DeleteMultipleRows()
        Call DeleteRows(ActiveSheet.Range("A1:A65536"), "Apple")
        Call DeleteRows(ActiveSheet.Range("A1:A65536"), "Banana")
        Call DeleteRows(ActiveSheet.Range("I1:I65536"), "Pear")
End SubSub 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 ответ

Есть решение
Tim Williams ответил: 12 мая 2018 в 05:36

Вы можете добавить необязательный параметр к вашему подкоду DeleteRows, чтобы дать вам больше контроля над его поведением:

Sub DeleteMultipleRows()
        DeleteRows ActiveSheet.Range("A1:A65536"), "Apple"
        DeleteRows ActiveSheet.Range("A1:A65536"), "Banana"
        DeleteRows ActiveSheet.Range("I1:I65536"), "Pear", False
End SubSub 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
Waleed Malik ответил: 12 мая 2018 в 05:23
Set c = rng.Find (term, LookIn: = xlValues, _ lookat: = If (LookAtPart, xlPart, xlWhole) Это дает мне и ошибку
TylerH ответил: 12 мая 2018 в 05:24
@WaleedMalik Есть два "я" в его IIF(); убедитесь, что вы скопировали его полностью, а не набрали его вручную (я вижу, что он отсутствует в вашем комментарии).
Waleed Malik ответил: 12 мая 2018 в 05:25
@TylerH, поэтому я удалил меня изначально, так как я думал, что это ошибка, но все равно дает мне ошибку
Tim Williams ответил: 12 мая 2018 в 05:36
Отредактировано - отсутствует закрытие )