Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: sverweis mit 2 kriterien in VBA

sverweis mit 2 kriterien in VBA
09.11.2013 10:16:24
Kai
Hallo,
ich bräuchte den VBA-Code, wie ich einen Sverweis mit 2 Kriterien (Formel habe ich hier im Forum gefunden, danke!) im Makro verwende.
Die Formel an sich direkt in eine Zelle geschrieben tut, der aufgezeichnete Code schreibt natürlich die Formel auch in die Zelle, ich brauche sie aber in einer If-Abfrage im Code und möchte in die Basistabelle nichts schreiben, weil die nicht von mir kommt.
Die Formel in der Zelle:
=VERWEIS(2;1/('Liste'!L:L&'Liste'!O:O="Vertrag"&"Firma");'Liste'!S:S)
In Register Liste stehen in Spalten L und O die zu suchenden Begriffe "Vertrag" und "Firma", in Spalte S das auszugebende Ergebnis wenn beide Begriffe gefunden wurden. Tut soweit auch.
Mein Versuch, dies als VBA-Code umzusetzen führt zur Fehlermeldung "Typen unverträglich":
Ergebnis = WorksheetFunction.Lookup(2, 1 / (Sheets("Liste").[L:L] & Sheets("Liste").[O:O] = vertragsart & Firmenname)), Sheets("Liste").[S:S])
Dabei habe ich die festen Werte "Vertrag" und "Firma" durch Variablen vertragsart und Firmenname ersetzt.
Die Bestandteile einzeln ausprobiert hängt es an der &-Verknüpfung der beiden Sheets.Befehle...
Was mache ich falsch?
Gruß Kai

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: sverweis mit 2 kriterien in VBA
09.11.2013 11:33:07
Tino
Hallo,
versuch es mal mit Evaluate
Dim Erg, Vertragsart$, Firmenname$
Vertragsart = "Vertrag"
Firmenname = "Firma"
Erg = Evaluate("=LOOKUP(2,1/(Liste!$L:$L&Liste!$O:$O=""" & Vertragsart & Firmenname & """),Liste!$S:$S)")
Gruß Tino

Anzeige
AW: sverweis mit 2 kriterien in VBA
09.11.2013 12:57:03
Kai
Super,
schönen Dank! Konnte mit Deiner Hilfe die Formel zum Laufen bekommen. Ich hatte im Original-Registernamen noch ein Sonderzeichen drin, das hat zusätzliche Probleme erzeugt.
Zwei Fragen, die ich mit meinem VBA-KnowHow nicht erklären kann:
Wieso muss ich hier nicht die Hochkommas um den Registernamen setzen
und
Welche Funktion haben die drei Anführungszeichen hintereinander?
Gruß Kai

Anzeige
AW: sverweis mit 2 kriterien in VBA
09.11.2013 15:01:44
Tino
Hallo,
die Hochkommas beim Registernamen werden erst benötigt wenn Leerzeichen im Namen vorkommen.
Kannst Du reinsetzten musst Du aber nicht!
Die drei Anführungszeichen bewirken, dass die Variablen im gesamten String
mit Anführungszeichen stehen, also wird der String so ausgegeben
=LOOKUP(2,1/(Liste!$L:$L&Liste!$O:$O="VertragFirma") ,Liste!$S:$S) 
Gruß Tino
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel. Dies kannst du über ALT + F11 tun.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (deine Datei)" klickst und "Einfügen" > "Modul" wählst.

  3. 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)")
  4. Ersetze "Liste" durch den tatsächlichen Namen deines Arbeitsblatts, wenn nötig.

  5. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige