2 Stimmen

Suche nach einem Bereich, der Werte enthält, die auch in einem zweiten Bereich in der gleichen Reihenfolge vorhanden sind

Was ist eine effiziente Methode, um Werte in einem Bereich, z. B. Bereich("A1:A2"), zu finden, die in einem zweiten Bereich, z. B. Bereich("B:B"), in derselben Reihenfolge vorhanden sind?

Bei meiner Suche habe ich bisher nur zwei Möglichkeiten gefunden: 1) Verwendung einer Schleife, um durch den zweiten Bereich zu iterieren. 2) Verwendung von Range("B:B").Find, um nach dem Wert in "A1" zu suchen und dann nach dem Wert von A2 in der darauffolgenden Zelle zu suchen. Die Werte in Range("B:B") sind nicht eindeutig, so dass die Suche fortgesetzt werden muss, bis nichts gefunden wird.

Gibt es eine andere Möglichkeit, die ich nicht in Betracht gezogen habe?

4voto

brettdj Punkte 53619

Während (2) vernünftig klingt, wäre eine andere schnelle Möglichkeit, B1 und B2 in einer einzigen Zelle in einer Arbeitsspalte (manuell oder mit VBA) zu verketten, für B2 & B3 usw. zu wiederholen und dann die kombinierte Zeichenfolge in einem einzigen Lookup abzugleichen

[Update]

Sie könnten eine Arbeitsspalte wie diese verwenden. Der Verkettungszeichen || wird verwendet, um falsche Übereinstimmungen zu vermeiden, eine Fehlerprüfung behandelt die Situation, dass keine Übereinstimmung vorliegt

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X