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

VBA / Vlookup über zwei versch. Dateien

Forumthread: VBA / Vlookup über zwei versch. Dateien

VBA / Vlookup über zwei versch. Dateien
01.06.2004 11:50:32
Hein
hi there
ich habe das problem, dass ich im VBA-Editor eine SVERWEIS-Funktion einbauen sollte, der Suchmatrix jedoch in einer anderen Datei zu finden ist.
Die Syntax für VLookup lautet = VLookup(Arg1, Arg2, Arg3, [Arg4]), wobei das "Arg2" für den Suchbereich steht. Mein Problem besteht im konkreten darin, dass meine Versuche auf die zweite Datei zu referenzieren fehlgeschlagen sind (versucht habe ich z.B. '[Dateiname.xls]!("Tabellenname")', der Mist funktioniert aber leider nicht.
hat jemand diesbezüglich Erfahrung?
Gruss
h.
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA / Vlookup über zwei versch. Dateien
Reinhard
Hallo Hein,
probiers mal so:
=vlookup(Arg1;[Dateiname.xls]Tabelle1!$F$16:$G$25;Arg3...)
Gruß
Reinhard
AW: VBA / Vlookup über zwei versch. Dateien
Udo
Das geht mit VBA nicht, nur wenn die andere datei geöffnet ist.
mfG Udo
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VLOOKUP mit VBA über zwei verschiedene Excel-Dateien


Schritt-für-Schritt-Anleitung

Um die VLOOKUP-Funktion (SVERWEIS) mit VBA zwischen zwei Excel-Dateien zu verwenden, folge diesen Schritten:

  1. Öffne beide Excel-Dateien: Stelle sicher, dass die Datei, die die Suchmatrix enthält, geöffnet ist. Das ist notwendig, damit VBA auf die Daten zugreifen kann.

  2. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xls) und wähle Einfügen > Modul.

  4. Füge den folgenden Code ein:

    Sub VLookupExample()
       Dim result As Variant
       Dim lookupValue As String
    
       lookupValue = "Suchwert" ' Hier den Wert eintragen, nach dem gesucht werden soll
    
       result = Application.VLookup(lookupValue, Workbooks("Dateiname.xls").Worksheets("Tabelle1").Range("$F$16:$G$25"), 2, False)
    
       If IsError(result) Then
           MsgBox "Wert nicht gefunden"
       Else
           MsgBox "Gefundener Wert: " & result
       End If
    End Sub
  5. Passe den Code an: Ersetze Suchwert, Dateiname.xls und Tabelle1 mit den entsprechenden Werten deiner Dateien.

  6. Führe das Makro aus: Drücke F5, um das Makro auszuführen und den gefundenen Wert anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: "Wert nicht gefunden": Stelle sicher, dass der Suchwert in der angegebenen Range vorhanden ist und dass die Datei, aus der du suchst, geöffnet ist.

  • Fehler: Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs: Prüfe den Namen der Arbeitsmappe und des Arbeitsblatts auf Schreibfehler. Stelle sicher, dass die Datei geöffnet ist.


Alternative Methoden

Wenn du kein VBA verwenden möchtest, gibt es auch die Möglichkeit, die VLOOKUP-Funktion direkt in Excel zu verwenden. Hier ein Beispiel:

=VLOOKUP(A1; [Dateiname.xls]Tabelle1!$F$16:$G$25; 2; FALSE)

Diese Methode funktioniert jedoch nur, wenn die Datei Dateiname.xls geöffnet ist.


Praktische Beispiele

Angenommen, du arbeitest mit zwei Dateien: Umsätze.xls und Preise.xls. In Preise.xls möchtest du die Preise für Produkte aus Umsätze.xls abgleichen.

  1. Öffne beide Dateien.
  2. Verwende den VBA-Code oben, um die Preise abzurufen oder direkt die VLOOKUP-Formel in einer Zelle von Preise.xls.

Tipps für Profis

  • Nutze Application.Workbooks im VBA-Code, um auf mehrere Dateien zuzugreifen. Das erhöht die Flexibilität und ermöglicht komplexere Datenabfragen.

  • Wenn du oft mit VLOOKUP und VBA arbeitest, ziehe in Betracht, benutzerdefinierte Funktionen (UDFs) zu erstellen, um deine Arbeit zu automatisieren.


FAQ: Häufige Fragen

1. Warum funktioniert VLOOKUP nicht, wenn die zweite Datei nicht geöffnet ist?
VLOOKUP benötigt Zugriff auf die Daten in der Zielarbeitsmappe, daher muss sie geöffnet sein.

2. Gibt es eine Alternative zu VLOOKUP in VBA?
Ja, du kannst die Application.Match-Funktion zusammen mit Application.Index verwenden, um ähnliche Ergebnisse zu erzielen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige