Mam kolumnę zawierającą ścieżki plików. Chcę utworzyć kolejną kolumnę zawierającą tylko rozszerzenia ścieżek. Jak mogę to zrobić w programie Microsoft Excel?
microsoft-excel
Nam G VU
źródło
źródło
REGEXEXTRACT(A1, "\.([^.]*)$")
Odpowiedzi:
Ta formuła przyda się, jeśli nazwa pliku zawiera więcej niż jedną kropkę
źródło
Zaczerpnięty z innej odpowiedzi (zmieniony, aby szukać kropek, a nie spacji):
źródło
Odpowiedź Cyryla działa tylko wtedy, gdy rozszerzenie ma 3 lub 4 znaki, a odpowiedź user273281 nie działała, gdy
.
w nazwie pliku znajdowały się (kropki).Dlatego wymyśliłem nowy sposób na osiągnięcie tego,
Uwaga: odpowiedź user273281 nie działała w przypadku, gdy nazwa pliku to
1. Macro based file.zip
. Powraca. Macro based file.zip
źródło
Zakładając, że masz ładnie sformatowane rozszerzenia, możesz to zrobić szybko jak
=RIGHT(A1,3)
. Bardziej niezawodne rozwiązanie znalazłoby indeks skrajnie prawy,.
a następnie wyodrębnił pozostałe znaki.źródło
Natknąłem się na to, jest to najprostsze rozwiązanie, jakie widziałem ...
=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")
Działa, ponieważ oddziela wszystkie znaki po ostatnim okresie od wszystkich innych znaków o 50 okresów lub dowolną wybraną liczbę. Następnie możesz wybrać najbardziej wysunięte w prawo 50 znaków, wiedząc, że wybierasz tylko znaki rozszerzeń i kilka kropek. Zastąp okresy i gotowe.
Źródło
Alternatywnie: parsowanie XML
Zgrabną sztuczką, której czasami używam do parsowania ciągów, jest wykorzystanie
FilterXML()
funkcji (Excel 2013 i późniejsze). Podstawową strategią jestSubstitute()
sformatowanie łańcucha w taki sposób, aby był on parsowany między elementami łańcucha xml, a następnie można użyć składni xpath do wygodnego poruszania się po parsowanych elementach. Korzystając z tej strategii, uzyskanie rozszerzenia wyglądałoby tak ...Jeśli nie znasz xml, może to wydawać się zastraszające, ale jeśli potrafisz zrozumieć, co się dzieje, uważam, że jest czystszy, bardziej elastyczny i łatwiejszy do zapamiętania niż alternatywne metody wykorzystujące len (), substitute (), itp. Jednym z powodów, dla których jest to przyjemniejsze, jest to, że istnieje tylko jedno odwołanie do komórki.
Nielegalne postacie
Istnieją dwa znaki, które są dozwolone w ścieżkach, ale nie w xml:
&
i'
Powyższe równanie zadziała, jeśli te postacie nie będą obecne, w przeciwnym razie trzeba będzie poradzić sobie z czymś takim ...
=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")
Przykład
Załóżmy, że mamy nieprzyjemną ścieżkę pliku:
C: \ Folder1 \ Folder2 \ (brzydkie znaki! @ # $% ^ () _ + = {} ;;, `) \ two.dots.LongExt
1.)
Substitution()
Część zamieni go na ciąg xml taki jak ten ...2.) Po sformatowaniu w ten sposób, wybranie ostatniego
p
elementu przy użyciu składni xpath jest banalne//p[last()]
.źródło