Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Sverweis mit variablem Dateinamen

VBA Sverweis mit variablem Dateinamen
23.03.2017 08:42:42
steffen32
Guten Morgen,
ich habe ein Problem mit einer Formel und komme hier nicht mehr weiter.
Wäre für Hinweise sehr dankbar.
Folgende Ausgangslage:
Es gibt verschiedene Dateien mit dem immer gleichen Aufbau. In diesen werden Einträge zu Kundennummern erfasst.
Aufbau der Eingabedatei:
Spalte A: Kundennummer (kommt nur einmal vor) / Spalte BF soll ausgelesen werden
In einer zentralen Datei sollen bestimmte Einträge aus den Eingabedateien ausgelesen werden.
Aufbau der Datei:
In Spalte A steht auch hier die Kundennummer (kommt nur einmal vor)
In Spalte I ist der Pfad zur jeweiligen Datei hinterlegt. In Spalte J der Dateiname.
In Spalte L soll jetzt der Wert aus der Zieldatei eingetragen werden.
Mit folgender Formel funktioniert dies für die Zelle L2:
Pfad = Cells(2, 9)
Dateiname = Cells(2, 10)
Blatt = "KndNr"
Range("L2:L700").FormulaR1C1 = _
"=VLOOKUP(RC[-11],'" & Pfad & "\[" & Dateiname & "]" _
& Blatt & "'!RC1:RC58,58,FALSE)"
Aber eben nur für die Zelle L2.
Wie kann die Formel so gestaltet werden, dass je vorhandenem Eintrag in Spalte A das oben beschriebene Schema für die Formelbildung durchlaufen wird?
Schon mal vielen Dank für Eure Ideen.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Sverweis mit variablem Dateinamen
23.03.2017 08:48:59
Daniel
Hi
in diesem Fall musst du mit einer Schleife über alle Zelle arbeiten müssen und jede Formel einzeln mit dem zeilenspezifischen Pfad und Dateinamen erstellen.
Gruß Daniel
AW: VBA Sverweis mit variablem Dateinamen
23.03.2017 09:05:04
steffen32
Hallo Daniel,
vielen Dank für die schnelle Antwort.
Genau daran scheitere ich aktuell.
Hast du eine Idee, wie sich das in o.g. Formel darstellen lässt?
Gruß
Anzeige
AW: VBA Sverweis mit variablem Dateinamen
23.03.2017 09:16:52
steffen32
AW: VBA Sverweis mit variablem Dateinamen
23.03.2017 09:21:46
Daniel
Hi
im Prinzip so:

Blatt = "KndNr"
for Z = 2 to 700
Pfad = Cells(Z, 9)
Dateiname = Cells(Z, 10)
Cells(Z, 12).FormulaR1C1 = _
"=VLOOKUP(RC[-11],'" & Pfad & "\[" & Dateiname & "]" _
& Blatt & "'!RC1:RC58,58,FALSE)"
Next
Gruß Daniel
Anzeige
AW: VBA Sverweis mit variablem Dateinamen
23.03.2017 09:40:22
steffen32
Hallo Daniel,
das scheint zu funktionieren.
Vielen Dank für deine schnelle Hilfe. Ich bin einfach nicht auf die Idee gekommen z zu nutzen und war schon kurz davor einfach alles manuell zu kopieren.
Du hast mir sehr weitergeholfen.
Gruß
AW: VBA Sverweis mit variablem Dateinamen
23.03.2017 10:11:13
Daniel
naja, manuell gäbe es auch einen Weg, dieses Problem mit wenig aufwand zu lösen:
1. man muss in die Zellen L2:L700 eine Formel schreiben, welches die gewünschte Zielformel als Text erstellt:
="=SVerweis(A"&Zeile()&";'"&I2&"\["&J2&"]KndNr'!$A:$BD;58;falsch)"
2. man kopiert diese Formel und fügt sie an gleicher Stelle als Text ein
3. man ersetzt mit der Menüfunktion ERSETZEN das "=" durch "=".
Bei diesem Ersetzen wandelt Excel dann den Text in eine Formel um.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Sverweis mit variablem Dateinamen


Schritt-für-Schritt-Anleitung

Um einen VBA Sverweis mit variablem Dateinamen zu erstellen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDateiName)" > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:
Sub VLookupWithVariableFilename()
    Dim Blatt As String
    Dim Pfad As String
    Dim Dateiname As String
    Dim Z As Integer

    Blatt = "KndNr"
    For Z = 2 To 700
        Pfad = Cells(Z, 9)
        Dateiname = Cells(Z, 10)
        Cells(Z, 12).FormulaR1C1 = _
        "=VLOOKUP(RC[-11],'" & Pfad & "\[" & Dateiname & "]" & Blatt & "'!RC1:RC58,58,FALSE)"
    Next Z
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus: Drücke ALT + F8, wähle VLookupWithVariableFilename und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Fehler: "Referenz kann nicht gefunden werden"
    Lösung: Überprüfe, ob der angegebene Pfad und Dateiname korrekt sind. Achte darauf, dass die Dateien existieren.

  • Fehler: "Zelle enthält eine Formel, die nicht ausgewertet werden kann"
    Lösung: Stelle sicher, dass die Zellen in Spalte A die richtigen Werte enthalten und die Eingabedateien den erwarteten Aufbau haben.


Alternative Methoden

Wenn Du keinen VBA-Code verwenden möchtest, kannst Du folgende alternative Methode nutzen:

  1. Schreibe in Zelle L2 folgende Formel:
    ="=SVERWEIS(A2;'"&I2&"\["&J2&"]KndNr'!$A:$BD;58;FALSCH)"
  2. Kopiere die Formel von L2 nach unten bis L700.
  3. Wähle die Zellen L2:L700 aus und drücke F2, gefolgt von STRG + ENTER, um die Formeln zu aktivieren.

Praktische Beispiele

Angenommen, Du hast folgende Daten in Deiner Excel-Datei:

  • Spalte A: Kundennummer
  • Spalte I: C:\Daten\Kunden
  • Spalte J: Kundenliste.xlsx

Wenn Du das oben genannte VBA-Skript ausführst, wird es automatisch die Werte aus der Datei "Kundenliste.xlsx" auslesen und in die Spalte L eintragen.


Tipps für Profis

  • Verwende Fehlerbehandlung: Füge in deinen VBA-Code eine Fehlerbehandlung hinzu, um unerwartete Probleme elegant zu lösen.
  • Dynamische Bereiche: Nutze dynamische Bereichsnamen, um sicherzustellen, dass das Skript auch mit unterschiedlichen Datenmengen funktioniert.
  • Makros speichern: Stelle sicher, dass Du die Datei als Makro-fähige Datei (z.B. .xlsm) speicherst.

FAQ: Häufige Fragen

1. Kann ich den VBA-Code anpassen, um mehr Spalten auszulesen?
Ja, Du kannst die Cells(Z, 12)-Zeile anpassen, um Werte in andere Spalten einzufügen.

2. Funktioniert dieser VBA Sverweis auch in Excel 365?
Ja, der Code sollte in Excel 365 sowie in früheren Versionen funktionieren, solange die grundlegenden VBA-Funktionen unterstützt werden.

3. Was mache ich, wenn die Dateinamen variieren?
Du kannst eine zusätzliche Spalte einfügen, um den Dateinamen dynamisch zu generieren, oder eine Liste der Dateinamen verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige