Поиск нескольких строк в VBA - PullRequest
0 голосов
/ 28 мая 2018

так что в основном мне нужно было создать макрос, который должен сравнивать множество ячеек, которые содержат много разных строк.То, что у меня уже было, выглядит следующим образом:

Sub strcom()
Dim r as range ‘dt_range is a named range in name manager
For r in range(“dt_range”)
If instr(“ab”, r.value,1) then ...
If instr(“cd”, r.value, 1) then ...
...
Next r
...
End sub

Если я собираюсь сделать это, это будет очень неэффективно, потому что у меня есть множество строк для сравнения, есть ли более эффективные методы вместо этого?Я хотел использовать выбранный случай, но не уверен, как он будет работать.

1 Ответ

0 голосов
/ 28 мая 2018

Select Case дает действительно небольшое преимущество перед If-Else.Тем не менее, это способ сделать это:

Sub StrCom()

    Dim r As Range
    Dim dtRange As Range

    Set dtRange = Range("A1:Z10")

    For Each r In dtRange

        Select Case True

        Case InStr(1, "ab", r)

        Case InStr(1, "cd", r)

        Case Else

        End Select

    Next r
End Sub

Другой вариант - использовать 2 вложенных цикла, циклы из ячеек и из проверяемых значений.Как то так:

Sub StrCom()

    Dim r As Range
    Dim dtRange As Range

    Set dtRange = Range("A1:Z10")
    Dim someArray As Variant

    someArray = Array("ab", "cd", "ef")
    Dim arrVal As Variant

    For Each r In dtRange
        For Each arrVal In someArray
            If InStr(1, arrVal, r) Then
                'do something
            End If
        Next arrVal
    Next r

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...