Vlookup - Mehrere Ergebnisse mit VBA - VBA-Codebeispiele

Vlookup-Text

Die Standard-Vlookup-Funktion kann verwendet werden, um einen Wert in einer Tabelle zu finden:

Und wir würden SVERWEIS so verwenden:

=SVERWEIS(A1:10,"Hund",2,FALSCH)

um den Wert 30 zu geben.

In dieser Liste sehen wir jedoch, dass Dog dreimal vorkommt. Die standardmäßige SVERWEIS-Funktion gibt nur den Wert zurück, der dem ersten Element in dieser Liste zugeordnet ist. Es werden nicht die 125 oder 9.250 mit der 2. oder 3. Instanz von "Hund" in dieser Liste zurückgegeben.

Vlookup Mehrere Ergebnisse

Mit der folgenden Funktion können wir einen Bereich, einen zu suchenden Ausdruck und die Instanz (Ergebnisnummer) angeben und dann den entsprechenden Wert zurückgeben:

Funktion Find_nth_Occurrence(Column_Range As Range, Expression As String, Occ As Integer) As Double Dim Cell Dim Then Find_nth_Occurrence = Cell.Offset(0, 1).Value End If End If Next Cell End Function

Der Hauptunterschied zwischen dieser und der Standard-SVERWEIS-Funktion besteht darin, dass in diesem Fall der Bereich der einzige Etikettenbereich ist - nicht der gesamte Datenbereich.
Das Folgende ist eine Unterroutine, die diese Funktion basierend auf dem Click-Ereignis einer Befehlsschaltfläche aufruft. Es sucht im Bereich A1:A8 auf Sheet2 nach der 3. Instanz des Wortes Hund:

Private Sub CommandButton1_Click() Dim Answer As Double Answer = Find_nth_Occurrence(Sheets("Sheet2").Range("A1:A8"), "Dog", 3) MsgBox AnswerEnd Sub

Die Variable „Answer“ speichert das Ergebnis der Funktion – welches dann in einer Msgbox auf dem Bildschirm angezeigt wird:

>Wenn das Wort jedoch nicht in der Liste zu finden ist oder die Häufigkeit nicht vorkommt, z.
Antwort = Find_nth_Occurrence(Sheets("Sheet2").Range("A1:A8"), "Hund", 5)
Oder
Antwort = Find_nth_Occurrence(Sheets("Sheet2").Range("A1:A8"), "Pferd", 2)

wave wave wave wave wave