Excel Sverweis mit 2 Kriterien in VBA
Schritt-für-Schritt-Anleitung
Um einen Sverweis mit 2 Kriterien in VBA zu erstellen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:
-
Öffne den Visual Basic for Applications (VBA) Editor in Excel. Dies kannst du über ALT + F11 tun.
-
Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (deine Datei)" klickst und "Einfügen" > "Modul" wählst.
-
Schreibe den folgenden VBA-Code in das Modul:
Dim Erg As Variant
Dim Vertragsart As String
Dim Firmenname As String
Vertragsart = "Vertrag"
Firmenname = "Firma"
Erg = Evaluate("=LOOKUP(2,1/(Liste!$L:$L&Liste!$O:$O=""" & Vertragsart & Firmenname & """"),Liste!$S:$S)")
-
Ersetze "Liste" durch den tatsächlichen Namen deines Arbeitsblatts, wenn nötig.
-
Führe das Makro aus, um den Wert in der Variablen Erg zu erhalten, der dem Sverweis mit 2 Bedingungen entspricht.
Häufige Fehler und Lösungen
-
Fehlermeldung "Typen unverträglich": Dieser Fehler tritt häufig auf, wenn die Variablen nicht korrekt definiert sind. Stelle sicher, dass Vertragsart und Firmenname als String deklariert sind.
-
Falsche Verwendung der Hochkommas: Wenn dein Arbeitsblatt Leerzeichen im Namen hat, musst du Hochkommas verwenden. Beispiel: "Liste mit Leerzeichen".
-
Sonderzeichen im Arbeitsblattnamen: Wenn dein Arbeitsblatt Sonderzeichen enthält, kann dies zu Problemen führen. Überprüfe den Namen des Arbeitsblatts auf solche Zeichen.
Alternative Methoden
Eine alternative Methode, um einen doppelten Sverweis in Excel zu nutzen, wäre die Verwendung von Formeln direkt in den Zellen. Zum Beispiel:
=VERWEIS(2;1/(Liste!L:L&Liste!O:O="Vertrag"&"Firma");Liste!S:S)
Diese Formel kann in eine Zelle eingefügt werden, anstatt sie in VBA zu verwenden. Beachte, dass dies nur sinnvoll ist, wenn du die Ergebnisse direkt in der Tabelle benötigst.
Praktische Beispiele
Nehmen wir an, du hast eine Tabelle „Liste“ mit den folgenden Daten:
| L |
O |
S |
| Vertrag |
Firma A |
Ergebnis A |
| Vertrag |
Firma B |
Ergebnis B |
| Vertrag |
Firma C |
Ergebnis C |
Wenn du nun den Sverweis mit 2 Kriterien für "Vertrag" und "Firma B" durchführen möchtest, würde der VBA-Code wie folgt aussehen:
Vertragsart = "Vertrag"
Firmenname = "Firma B"
Erg = Evaluate("=LOOKUP(2,1/(Liste!$L:$L&Liste!$O:$O=""" & Vertragsart & Firmenname & """"),Liste!$S:$S)")
Das Ergebnis in Erg wäre dann "Ergebnis B".
Tipps für Profis
-
Verwende WorksheetFunction: Wenn du sicherstellen möchtest, dass dein Code robuster ist, kannst du stattdessen WorksheetFunction verwenden. Dies bietet dir die Möglichkeit, Fehler zu behandeln.
-
Modularer Code: Schreibe deinen VBA-Code modular, indem du Funktionen erstellst, die spezifische Aufgaben übernehmen. Dies erhöht die Wartbarkeit und Lesbarkeit deines Codes.
-
Debugging: Wenn du auf Probleme stößt, verwende Debug.Print um Werte während der Ausführung zu überprüfen.
FAQ: Häufige Fragen
1. Wieso benötige ich Hochkommas um den Registernamen?
Hochkommas sind notwendig, wenn der Name Leerzeichen enthält. Es ist jedoch nicht zwingend erforderlich, diese zu verwenden, wenn der Name keine Leerzeichen hat.
2. Was bewirken die drei Anführungszeichen im Code?
Die drei Anführungszeichen sorgen dafür, dass die Variablen in der gesamten Formel in Anführungszeichen gesetzt werden. Dies ist wichtig, damit die Excel-Formel korrekt interpretiert wird.
3. Kann ich den VBA-Code auch in Excel 365 verwenden?
Ja, der Code funktioniert in Excel 365 sowie in anderen Versionen, die VBA unterstützen. Achte jedoch darauf, dass alle verwendeten Funktionen auch in deiner Version verfügbar sind.
4. Wie kann ich den Code anpassen, um mehr als zwei Kriterien zu verwenden?
Um mehr Bedingungen einzufügen, kannst du die Logik der LOOKUP-Funktion erweitern oder eine komplexere Formel verwenden. Alternativ kannst du die FILTER-Funktion in neueren Excel-Versionen in Betracht ziehen.