Удалить ячейки, которые не содержат одно из нескольких указанных слов - PullRequest
0 голосов
/ 14 марта 2019

У меня есть код Excel, который удаляет все, что я не ввожу.

Если пользователь вводит собаку, кошку, дом, а затем КОНЕЦ, все ячейки, содержащие слова собака, кошка и дом, должны остаться.Все остальные ячейки должны быть удалены.

Сейчас это работает, если пользователь пишет, например, Dog, а затем END.Тогда он удалит все клетки, но там, где он говорит, собака.Мне нужно, чтобы он работал, если пользователь пишет: Dog, Cat, House, а затем END

Sub test()

    Dim objectsToRemove As New Collection '<-- collection to store all the strings
    Dim currentObject As String

    Do While currentObject <> "END" '<-- while the input is different than "END", we keep on asking inputs
        currentObject = InputBox("which objects do you want to keep, ie some on the screen:")
        If currentObject <> "END" Then objectsToRemove.Add currentObject '<-- and add them to the collection
    Loop

    Dim myrange As Range

    Set myrange = ThisWorkbook.Worksheets("Tabell").UsedRange

    For Each cell In myrange.Cells
        For Each obj In objectsToRemove '<-- we apply the same logic of yours to each obj inside objectsToRemove
            If Not (cell.Value Like obj & "*") Then
                cell.Value = ""
            End If
        Next obj
    Next

End Sub

1 Ответ

2 голосов
/ 14 марта 2019

Вам необходимо поместить код очистки ячейки вне цикла.Используйте boolean, чтобы проверить, должна ли ячейка быть очищена:

Dim someBool as Boolean ' Should be named something meaningful to you
                        ' to understand the logic 6 months down the line

' Other code

For Each cell In myrange.Cells
    someBool = True
    For Each obj In objectsToRemove ' Should be named objectsToKeep
        If (cell.Value Like "*" & obj & "*") Then
            someBool = False
        End If
    Next obj
    If someBool Then cell.Value = ""
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...