Найти диапазон, содержащий значения, которые также существуют в том же порядке в пределах второго диапазона - PullRequest
2 голосов
/ 22 октября 2011

Какой эффективный способ найти значения в диапазоне, например Range («A1: A2»), которые существуют в том же порядке во втором диапазоне, например Range («B: B»).

На данный момент у меня есть только две возможности: 1) Использование цикла для перебора второго диапазона.2) Использование Range («B: B»). Найти для поиска значения в «A1», а затем проверить значение A2 в последовательной ячейке.Значения в диапазоне («B: B») не являются уникальными, поэтому необходимо продолжать поиск, пока ничего не найдено.

Есть ли другой вариант, который я не рассматривал?

1 Ответ

4 голосов
/ 22 октября 2011

Хотя (2) звучит разумно, другим быстрым способом было бы объединить B1 и B2 в одну ячейку в рабочем столбце (вручную или с помощью VBA), повторив для B2 и B3 Etc, а затем сопоставить объединенную строку в одиночный поиск

[Update]

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

Sub ConCatMatch()
    Dim rng1 As Range
    Dim X
    Set rng1 = Range([b1], Cells(Rows.Count, "B").End(xlUp))
    rng1.Offset(0, 1).Columns.Insert
    With rng1.Offset(0, 1)
        .FormulaR1C1 = "=RC[-1]&""||""&R[1]C[-1]"
        X = .Value2
        .EntireColumn.Delete
    End With
    If IsError(Application.Match([a1].Value & "||" & [a2].Value, X, 0)) Then
        MsgBox "No match", vbCritical
    Else
        MsgBox "Match starting at " & rng1.Cells(1).Offset(Application.Match([a1].Value & "||" & [a2].Value, X, 0) - 1, 0).Address(0, 0)
    End If
End Sub

enter image description here

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