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

Forumthread: Sverweis auf Dateien mit wechslenden Dateinamen

Sverweis auf Dateien mit wechslenden Dateinamen
Heinz
Hallo zusammen,
ich habe eine Datei (nennen wir mal Bericht) in welche täglich Daten eingetragen werden.
In drei andere Dateien (nennen wir mal Daten 1, 2, 3) werden ebenfalls täglich Daten eingetragen.
In der Datei Bericht nehme ich mittels Sverweis Bezug auf die Dateien Daten 1, 2, 3 allerdings nicht immer auf die gleiche, das wechselt.
Nun zu meinem Problem.
Die Dateien Daten 1, 2, 3 erhalten jedes Jahr einen neuen Dateinamen-Zusatz (die aktuelle Jahreszahl). Ebenfalls wird ein neues Verzeichnis angelegt in welchem die Dateien Daten 1, 2, 3 liegen, ebenfalls mit einem Jahreszusatz. Die Datei Bericht liegt in einem anderen Verzeichnis.
Die Sverweisfunktion sieht folgendermaßen aus:
SVERWEIS($U$1;'Y:\Bereich\Daten 2012\[Daten Bereich 3 2012.xls]Reihe 12'!$A$7:$M$370;13)
In 2011 sah die Formel so aus:
SVERWEIS($U$1;'Y:\Bereich\Daten 2011\[Daten Bereich 3 2011.xls]Reihe 12'!$A$7:$M$370;13)
An der Zellposition U1 befindet sich ein Datum.
Der Verzeichnis und Dateiname ändert sich jedes Jahr und daher muss ich alle Sverweise manuell ändern.
Ich hätte daher gerne die Möglichkeit das Jahr der Zelle U1 als Jahreszahl im Verzeichnis und Dateinamen einzubinden. Dann entfällt komplett die manuelle Änderung.
Mit INDIREKT hab ich das nicht hinbekommen. Geht wohl auch ohnehin nicht, da die Datiene Daten 1, 2, 3 nicht geöffnet werden sollen.
Wer kann mir hier helfen?
Im Archiv bin ich leider nicht fündig geworden.
Danke schon mal!
Gruß Heinz
Anzeige
AW: Sverweis auf Dateien mit wechslenden Dateinamen
04.01.2012 06:11:14
Hajo_Zi
Hallo Heinz,
warum änderst Du nicht einmal die Quelle über Daten, Verbindung, Verknüpfung bearbeiten?

AW: Sverweis auf Dateien mit wechslenden Dateinamen
05.01.2012 00:04:03
Heinz
Hallo Hajo,
danke erst mal für deine Antwort.
Die Möglichkeit geht schon mal schneller als alle Verknüpfungen einzeln anpassen.
Allerdings wäre mir eine automatisierte Lösung sehr viel genehmer.
Falls ich mal nicht da sein sollte müssen die Dateien ja trotzdem funktionieren.
Hast du noch ne Idee wie das anders gelöst werden könnte.
Die Dateinamen und Verzeichnisse (von Daten 1, 2, 3) ändern ist leider keine Option da ich darauf keinen Einfluß habe.
Gruß Heinz
Anzeige
AW: Sverweis auf Dateien mit wechslenden Dateinamen
05.01.2012 00:49:54
Josef

Hallo Heinz,
teste mal diese Möglichkeit.
Der Code kommt in das Modul der Tabelle mit dem Jahr in U1.
' **********************************************************************
' Modul: Tabelle6 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim vntLink As Variant
  Dim lngIndex As Long
  Dim strReplace As String, strNewLink As String
  
  If Target.Address(0, 0) = "U1" Then
    If IsNumeric(Target) Then
      If Target >= 1900 And Target <= 3999 Then
        strReplace = " " & CStr(Target)
        vntLink = ThisWorkbook.LinkSources
        If Not IsEmpty(vntLink) Then
          For lngIndex = 1 To UBound(vntLink)
            strNewLink = regReplace(vntLink(lngIndex), " [0-9]{4}", strReplace)
            If strNewLink <> CStr(vntLink(lngIndex)) Then
              ThisWorkbook.ChangeLink Name:=vntLink(lngIndex), _
                NewName:=strNewLink, Type:=xlExcelLinks
            End If
          Next
        End If
      End If
    End If
  End If
  
End Sub


Private Function regReplace(ByVal Text As String, ByVal Pattern As String, ByVal Replacement As String, Optional IgnoreCase As Boolean = True) As String
  Dim objRegExp As Object
  Set objRegExp = CreateObject("Vbscript.regexp")
  With objRegExp
    .Pattern = Pattern
    .IgnoreCase = IgnoreCase
    .Global = True
    regReplace = .Replace(Text, Replacement)
  End With
  Set objRegExp = Nothing
End Function



« Gruß Sepp »

Anzeige
AW: Sverweis auf Dateien mit wechslenden Dateinamen
05.01.2012 01:03:01
Heinz
Hallo Sepp,
danke für das Makro.
Hab das jetzt mal ins Modul kopiert.
Allerdings hab ich keinen Plan wie ich das jetzt in meine Formeln einbinde.
SVERWEIS($U$1;'Y:\Bereich\Daten 2012\[Daten Bereich 3 2012.xls]Reihe 12'!$A$7:$M$370;13)
Wo kommt denn was hin?
Kannst du mir da noch mal nen Tip geben?
Danke dir.
Gruß Heinz
Anzeige
AW: Sverweis auf Dateien mit wechslenden Dateinamen
05.01.2012 01:19:05
Josef

Hallo Heinz,
du musst gar nichts "einbinden", wenn du in U1 die Jahreszahl änderst, werden die Verknüpfungen angepasst.

« Gruß Sepp »

Anzeige
AW: Sverweis auf Dateien mit wechslenden Dateinamen
05.01.2012 02:15:07
Heinz
Hallo Sepp,
dann funzt das leider nicht.
Ich hab da zwar ne Formel in U1 drinne aber ich hab mal manuell das Datum eingegeben aber auch das hat leider nicht funktioniert. Weder als Jahreszahl noch als komplettes Datum.
Gruß Heinz
AW: Sverweis auf Dateien mit wechslenden Dateinamen
05.01.2012 02:19:49
Josef

Hallo Heinz,
von Formel in U1 war bisher noch nicht die Rede!
Bei manueller Eingabe der Jahreszahl in U1 läuft der Code, sofern du in auch wirklich in das richtige Tabellenmodul eingefügt hast.
Welche Formel steht den in U1?

« Gruß Sepp »

Anzeige
AW: Sverweis auf Dateien mit wechslenden Dateinamen
05.01.2012 03:16:13
Heinz
Hallo Sepp,
die Formel in U1 lautet wie folgt:
=JETZT()-0,26
Aber auch wenn ich manuell eine Jahreszahl dort eingebe läuft das Makro bei mir nicht.
Zu der verwendeten Formel ist zu sagen das ich anhand dieses Datums in den Datendateien suchen lasse.
Die "-0,26" wird benötigt damit der Datumssprung nicht zu früh erfolgt.
Ich hab das Makro jetzt mal Versuchsweise ins aktuelle Tabellenblatt sowie in "Diese Arbeitsmappe" und in Modul1 eingefügt. Aber ich hab bei allen Versuchen keinen Erfolg erkennen können.
Gruß Heinz
Anzeige
AW: Sverweis auf Dateien mit wechslenden Dateinamen
05.01.2012 10:13:26
Josef

Hallo Heinz,
anbei eine Beispieldatei mit neuem Code, der auf die Formel in U1 abgestimmt ist, teste mal.
https://www.herber.de/bbs/user/78222.xls

« Gruß Sepp »

Anzeige
AW: Sverweis auf Dateien mit wechslenden Dateinamen
05.01.2012 23:23:58
Heinz
Hallo Sepp,
hab gerade getestet. Funzt Super. Genau so wie ich mir das vorgestellt habe.
Ich kann mich nur bedanken.
Ihr "Profis" macht hier einen genialen Job.
Was wären wir "Anfänger, Laien etc" ohne euch.
Vielen Dank. Gruß Heinz
;

Forumthreads zu verwandten Themen

Anzeige
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

Sverweis auf Dateien mit wechselnden Dateinamen


Schritt-für-Schritt-Anleitung

  1. Öffne die Datei Bericht, in der du die Daten aus den Dateien Daten 1, 2 und 3 abrufen möchtest.

  2. Gehe zu Zelle U1 und trage dort das Jahr manuell ein oder stelle sicher, dass die Formel =JETZT()-0,26 korrekt eingegeben ist.

  3. Füge den VBA-Code in das Modul der Tabelle ein, die U1 enthält. Gehe dazu wie folgt vor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Füge den folgenden Code in das entsprechende Tabellenmodul ein:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim vntLink As Variant
        Dim lngIndex As Long
        Dim strReplace As String, strNewLink As String
    
        If Target.Address(0, 0) = "U1" Then
            If IsNumeric(Target) Then
                If Target >= 1900 And Target <= 3999 Then
                    strReplace = " " & CStr(Target)
                    vntLink = ThisWorkbook.LinkSources
                    If Not IsEmpty(vntLink) Then
                        For lngIndex = 1 To UBound(vntLink)
                            strNewLink = regReplace(vntLink(lngIndex), " [0-9]{4}", strReplace)
                            If strNewLink <> CStr(vntLink(lngIndex)) Then
                                ThisWorkbook.ChangeLink Name:=vntLink(lngIndex), _
                                NewName:=strNewLink, Type:=xlExcelLinks
                            End If
                        Next
                    End If
                End If
            End If
        End If
    End Sub
    
    Private Function regReplace(ByVal Text As String, ByVal Pattern As String, ByVal Replacement As String, Optional IgnoreCase As Boolean = True) As String
        Dim objRegExp As Object
        Set objRegExp = CreateObject("Vbscript.regexp")
        With objRegExp
            .Pattern = Pattern
            .IgnoreCase = IgnoreCase
            .Global = True
            regReplace = .Replace(Text, Replacement)
        End With
        Set objRegExp = Nothing
    End Function
  4. Teste die Funktion, indem du das Jahr in U1 änderst. Die Verknüpfungen zu den externen Dateien sollten nun automatisch angepasst werden.


Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht ausgeführt.

    • Lösung: Stelle sicher, dass der Code im richtigen Tabellenmodul eingefügt wurde. Der Code muss im Modul der Tabelle stehen, in der U1 ist.
  • Fehler: U1 enthält eine Formel und nicht die Jahreszahl.

    • Lösung: Die Zelle U1 sollte eine manuelle Eingabe der Jahreszahl enthalten. Die Formel =JETZT()-0,26 kann zu Problemen führen, da sie kein festes Jahr zurückgibt.
  • Fehler: Die Verknüpfungen werden nicht aktualisiert.

    • Lösung: Überprüfe, ob die Zelle U1 tatsächlich geändert wird und ob die Verknüpfungen in den Daten 1, 2 und 3 korrekt definiert sind.

Alternative Methoden

Eine alternative Methode zur Automatisierung von Verknüpfungen könnte die Verwendung von Power Query sein. Diese Funktion erlaubt es dir, Daten aus verschiedenen Quellen zu importieren und dabei dynamische Parameter zu verwenden, um die Dateinamen anzupassen. Du kannst den Abfrage-Editor nutzen, um die aktuellen Verzeichnisse und Dateinamen festzulegen.


Praktische Beispiele

Angenommen, du hast die Jahreszahl 2023 in U1. Deine SVERWEIS-Formel könnte wie folgt aussehen:

=SVERWEIS($U$1;'Y:\Bereich\Daten 2023\[Daten Bereich 3 2023.xls]Reihe 12'!$A$7:$M$370;13)

Wenn du das Jahr in U1 änderst, wird die Verknüpfung automatisch aktualisiert, sodass du nicht mehr manuell die Dateien anpassen musst.


Tipps für Profis

  • Verwende definierte Namen: Definiere einen Namen für den Bereich, der die dynamische Verknüpfung enthält. So kannst du die Lesbarkeit deiner Formeln verbessern.

  • Regelmäßige Überprüfung: Überprüfe regelmäßig deine Makros und Formeln, um sicherzustellen, dass sie mit den neuesten Änderungen in der Datenstruktur kompatibel sind.

  • Backup: Mache regelmäßig Backups deiner Excel-Dateien, insbesondere wenn du mit VBA arbeitest, um Datenverluste zu vermeiden.


FAQ: Häufige Fragen

1. Kann ich auch andere Funktionen neben SVERWEIS verwenden?
Ja, du kannst auch andere Funktionen wie WVERWEIS oder INDEX/VERGLEICH verwenden, solange die Verknüpfungen korrekt angepasst werden.

2. Funktioniert das auch in Excel Online?
Die Verwendung von VBA ist in Excel Online nicht möglich. Für Online-Versionen empfehle ich, die Power Query-Funktionalität zu nutzen.

3. Wie kann ich sicherstellen, dass die Verknüpfungen immer aktuell sind?
Stelle sicher, dass die Zelle U1 immer die aktuelle Jahreszahl enthält und dass der VBA-Code im richtigen Modul platziert ist.

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