Extrahieren von Dateinamen aus einem Pfad (Microsoft Excel)
Barry hat ein Arbeitsblatt, in dem eine Spalte viele Dateipfade enthält. Er möchte eine Möglichkeit, nur den Dateinamen (den Teil rechts vom letzten Backslash) aus jedem Pfad zu extrahieren. Er fragt sich, ob es einen schnellen Weg gibt, dies zu tun, ohne die Funktion „Text in Spalten“ zu verwenden.
Es gibt verschiedene Möglichkeiten, je nachdem, ob Sie ein Makro verwenden möchten oder nicht.
Wenn Ihre Dateinamen alle gleich lang sind, können Sie einfach die RECHTE Funktion verwenden, um die letzten Zeichen herauszuziehen. (Diese Formel setzt voraus, dass sich der vollständige Pfad und Dateiname in Zelle A1 befindet.)
=RIGHT(A1,11)
Dies setzt voraus, dass der Dateiname immer 11 Zeichen lang ist, z. B. „text001.txt“. Wenn der Dateiname in jedem Fall eine andere Länge hat, funktioniert dieser Ansatz nicht. Stattdessen können Sie diese Formel ausprobieren:
=MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1), LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))
Beachten Sie, dass die Formel die SUBSTITUTE-Funktion zweimal verwendet. In jedem Fall werden die Backslashes (\) durch etwas anderes ersetzt. Beim ersten Mal werden alle durch einen ASCII-Wert von 1 ersetzt, und beim zweiten Mal werden sie durch nichts (eine leere Zeichenfolge) ersetzt, um festzustellen, wie viele Backslashes sich im ursprünglichen Pfad befanden. Die MID-Funktion wird verwendet, um (mithilfe von FIND und den SUBSTITUTE-Funktionen) den Ort des letzten Backslashs im Pfad zu lokalisieren und alles nach diesem Punkt zurückzugeben.
Eine kürzere Formel kann verwendet werden, wenn Sie sicher sind, dass der Dateiname niemals länger als 99 Zeichen sein wird:
=TRIM(RIGHT(SUBSTITUTE(A2,"\",REPT(" ",100)),99))
Diese Formel ersetzt alle umgekehrten Schrägstriche durch 100 Leerzeichen, erfasst die am weitesten rechts stehenden 99 Zeichen aus der resultierenden Zeichenfolge (dies wäre der Dateiname mit einer Reihe von Leerzeichen davor) und schneidet dann alle Leerzeichen ab.
Wenn Sie ein Makro verwenden möchten, können Sie eine sehr kurze Funktion erstellen, die eine Zeichenfolge (in diesem Fall den vollständigen Pfad) basierend auf Trennzeichen auseinander zieht:
Function GetFileName(File_Path) As String Dim Parts Parts = Split(File_Path, Application.PathSeparator) GetFileName = Parts(UBound(Parts)) End Function
Ich habe dir gesagt, es war kurz! Die Funktion, die die schwere Arbeit erledigt, ist die Split-Funktion, die eine Zeichenfolge basierend auf einem von Ihnen angegebenen Trennzeichen auseinander zieht und die Teile in ein Array einfügt. In diesem Beispiel verwendet die Split-Funktion als Trennzeichen das Pfadtrennzeichen, das für das System geeignet ist, auf dem Excel ausgeführt wird.
Das letzte Element des resultierenden Arrays (bestimmt mit der UBound-Funktion) enthält den Teil des ursprünglichen Pfads, der sich rechts vom letzten Pfadtrennzeichen befindet – den Dateinamen.
Sie können eine noch kürzere Funktion entwickeln, um die Aufgabe zu erledigen:
Function GetFileName(File_Path) As String GetFileName=Mid(File_Path,InStrRev(File_Path,"\")+1 End Function
Um eine der beiden Funktionen zu verwenden, fügen Sie eine Formel wie diese in eine Zelle ein:
=GetFileName(A1)
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (12903) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tippes für die ältere Menüoberfläche von Excel finden Sie hier: