Ich habe eine Spalte mit Dateipfaden. Ich möchte eine weitere Spalte erstellen, die nur die Erweiterungen der Pfade enthält. Wie kann ich das in Microsoft Excel machen?
microsoft-excel
Nam G VU
quelle
quelle
REGEXEXTRACT(A1, "\.([^.]*)$")
Antworten:
Diese Formel ist nützlich, wenn Sie mehr als einen Punkt im Dateinamen haben
quelle
Entnommen aus einer anderen Antwort (geändert, um nach Punkten und nicht nach Leerzeichen zu suchen):
quelle
Die Cyril-Antwort funktioniert nur, wenn die Erweiterung aus 3 oder 4 Zeichen besteht und die Antwort von user273281 nicht funktioniert hat, wenn der
.
Dateiname ( Punkte ) enthält.Daher habe ich einen neuen Weg gefunden, dies zu erreichen:
Hinweis: Die Antwort von user273281 funktionierte nicht für den Fall, dass der Dateiname lautet
1. Macro based file.zip
. Es kehrt zurück. Macro based file.zip
quelle
Vorausgesetzt, Sie haben gut formatierte Erweiterungen, können Sie dies schnell tun
=RIGHT(A1,3)
. Eine robustere Lösung würde den Index ganz rechts finden.
und dann die verbleibenden Zeichen extrahieren.quelle
Ich bin darauf gestoßen, was die einfachste Lösung ist, die ich je gesehen habe ...
=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")
Es funktioniert, weil alle Zeichen nach dem letzten Punkt durch 50 Punkte oder eine beliebige Zahl von allen anderen Zeichen getrennt sind. Sie können dann die am weitesten rechts stehenden 50 Zeichen auswählen, wobei Sie wissen, dass Sie nur Ihre Erweiterungszeichen und eine Reihe von Punkten auswählen. Ersetzen Sie die Punkte und Sie können loslegen.
Quelle
Alternative: XML-Analyse
Ein guter Trick, den ich manchmal für das Parsen von Zeichenfolgen im Allgemeinen verwende, ist die Nutzung der
FilterXML()
Funktion (Excel 2013 und höher). Die grundlegende Strategie besteht darinSubstitute()
, Ihre Zeichenfolge so zu formatieren, dass sie über Elemente in einer XML-Zeichenfolge analysiert wird. Anschließend können Sie mithilfe der xpath- Syntax bequem durch Ihre analysierten Elemente navigieren. Mit dieser Strategie würde eine Erweiterung folgendermaßen aussehen ...Wenn Sie mit XML nicht vertraut sind, kann dies einschüchternd wirken, aber wenn Sie verstehen, was vor sich geht, finde ich es sauberer, flexibler und leichter zu merken als die alternativen Ansätze mit len (), replace (), usw. Ein Grund, warum es schöner ist, ist, dass es nur eine Zellreferenz gibt.
Illegale Charaktere
Es gibt zwei Zeichen, die in Pfaden zulässig sind, jedoch nicht in XML:
&
und'
Die obige Gleichung funktioniert, wenn diese Zeichen nicht vorhanden sind. Andernfalls müssen sie wie folgt behandelt werden ...
=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")
Beispiel
Angenommen, wir haben einen bösen Dateipfad wie diesen:
C: \ Folder1 \ Folder2 \ (hässliche Zeichen! @ # $% ^ () _ + = {} ;;, `) \ two.dots.LongExt
1.) Der
Substitution()
Teil konvertiert es in eine XML-Zeichenfolge wie diese ...2.) Nach dieser Formatierung ist es trivial, das letzte
p
Element mithilfe der xpath-Syntax auszuwählen//p[last()]
.quelle