Wie bekomme ich eine Dateierweiterung in MS Excel?

10

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?

Nam G VU
quelle
1
Für alle, die in Google Spreadsheet nach Möglichkeiten suchen, können SieREGEXEXTRACT(A1, "\.([^.]*)$")
Joe

Antworten:

20
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")

Diese Formel ist nützlich, wenn Sie mehr als einen Punkt im Dateinamen haben

Kirill
quelle
2
Beachten Sie, dass dies nur für Dateierweiterungen funktioniert, die aus vier Zeichen oder weniger bestehen.
Tim Robinson
1
Sie können einfach die 5 in eine 6 oder was auch immer ändern, oder?
Devil's Advocate
Nein, das verursacht Probleme.
Devil's Advocate
4

Entnommen aus einer anderen Antwort (geändert, um nach Punkten und nicht nach Leerzeichen zu suchen):

=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
user273281
quelle
funktioniert ein Genuss! Vielen Dank für die schnelle Lösung zum Kopieren / Einfügen. Funktioniert für Dateierweiterungen mit Dateierweiterungen mit 2 bis 7 Zeichen und vollständiger Pfad- und Namespace-Notation im Dateinamen.
Zephan Schroeder
2

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:

=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))

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

Adarsh
quelle
0

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.

ta.speot.is
quelle
Das Lesen Ihrer Frage ist die Antwort, die ich gegeben hätte.
VerGuy
Ich denke, die eigentliche Frage hier ist: wie man das am weitesten rechts stehende "." in Excel.
Petersohn
Die Erweiterung besteht nicht immer aus 3 Zeichen. @pertersohn: Ja, du hast recht.
Nam G VU
0

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 darin Substitute(), 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 ...

=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")

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 ...

<A>
    <p>
        C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,`)\two
    </p>
    <p>
        .dots
    </p>
    <p>
        .txt
    </p>
</A>

2.) Nach dieser Formatierung ist es trivial, das letzte pElement mithilfe der xpath-Syntax auszuwählen //p[last()].

u8it
quelle