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, damit festgestellt werden kann, 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 ein Makro erstellen, das den Pfad rückwärts durchläuft, bis der letzte Backslash gefunden wird. Es gibt dann alles nach dem Backslash zurück. Das folgende Beispiel beginnt in Zelle B1, untersucht alles rechts von der Zelle (Zelle A1) und zieht dann Dateinamen heraus. Es durchläuft alle Zellen in Spalte A und fügt den Dateinamen, falls vorhanden, in Spalte B ein.
Sub GetFileName1() Dim Delimiter As String Dim Target As String Dim sFile As String Dim J As Integer Dim iDataLen As Integer Delimiter = "\" Range("B1").Select Do While ActiveCell.Offset(0, -1).Value <> "" Target = ActiveCell.Offset(0, -1).Value iDataLen = Len(Target) sFile = "Delimiter Not Found" For J = iDataLen To 2 Step -1 If Mid(Target, J, 1) = Delimiter Then sFile = Right(Target, iDataLen - J) Exit For End If Next J ActiveCell.Formula = sFile ActiveCell.Offset(1, 0).Select Loop End Sub
Sie können auch eine viel kürzere Version eines Makros verwenden, vorausgesetzt, Sie können die Split-Funktion verwenden. Diese Funktion wurde in der mit Excel 2000 bereitgestellten VBA-Version eingeführt und zieht eine Zeichenfolge basierend auf einem von Ihnen angegebenen Trennzeichen auseinander und fügt die Teile in ein Array ein. Dieses Beispiel zeigt die als benutzerdefinierte Funktion implementierte Lösung.
Function GetFileName2(File_Path) As String Dim Parts Parts = Split(File_Path, Application.PathSeparator) GetFileName2 = Parts(UBound(Parts)) End Function
In dieser Verwendung 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. Um die Funktion zu verwenden, fügen Sie eine Formel wie diese in eine Zelle ein:
=GetFileName2(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 (7333) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: