Jawaban:
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")
Formula ini akan berguna jika Anda memiliki lebih dari satu titik dalam nama file
Diambil dari jawaban lain (diubah untuk mencari titik dan bukan spasi):
=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
Jawaban Cyril hanya berfungsi jika ekstensi 3 atau 4 karakter dan jawaban user273281 tidak berfungsi ketika ada .
(periode) dalam nama file.
Karena itu saya menemukan cara baru untuk mencapai ini,
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
Catatan: aswer user273281 tidak berfungsi untuk kasus di mana nama file berada 1. Macro based file.zip
. Ia kembali. Macro based file.zip
Dengan asumsi Anda memiliki ekstensi yang diformat dengan baik, Anda dapat melakukannya dengan cepat =RIGHT(A1,3)
. Solusi yang lebih kuat akan menemukan indeks yang paling kanan .
dan kemudian mengekstraksi karakter yang tersisa.
Saya menemukan ini, yang merupakan solusi paling sederhana yang pernah saya lihat ...
=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")
Ini berfungsi karena ia memisahkan karakter apa pun setelah periode terakhir dari semua karakter lain sebanyak 50 periode, atau angka apa pun yang Anda pilih. Anda kemudian dapat memilih 50 karakter paling kanan mengetahui bahwa Anda tidak memilih apa pun kecuali karakter ekstensi dan banyak periode. Ganti periode dan Anda siap untuk pergi.
Alternatif: Parsing XML
Trik rapi yang terkadang saya gunakan untuk string parsing secara umum adalah memanfaatkan FilterXML()
fungsi (Excel 2013 dan yang lebih baru). Strategi dasar adalah menggunakan Substitute()
untuk memformat string Anda dengan cara diuraikan di seluruh elemen dalam string xml, dan kemudian Anda dapat menggunakan sintaks xpath untuk menavigasi elemen parsing Anda dengan mudah. Menggunakan strategi ini, mendapatkan ekstensi akan terlihat seperti ini ...
=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")
Jika Anda tidak terbiasa dengan xml, ini bisa terasa menakutkan, tetapi jika Anda dapat memahami apa yang terjadi, saya merasa lebih bersih, lebih fleksibel, dan lebih mudah diingat daripada pendekatan alternatif menggunakan len (), pengganti (), dll. Salah satu alasan mengapa itu lebih baik adalah karena hanya ada satu referensi sel.
Karakter Ilegal
Ada dua karakter yang diizinkan di jalur tetapi tidak di xml: &
dan'
Persamaan di atas akan berfungsi jika karakter ini tidak ada, jika tidak, mereka perlu ditangani seperti ini ...
=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")
Contoh
Misalkan kita memiliki jalur file yang tidak menyenangkan seperti ini:
C: \ Folder1 \ Folder2 \ (karakter jelek! @ # $% ^ () _ + = {} ;;, `) \ two.dots.LongExt
1.) Substitution()
Bagian tersebut akan mengubahnya menjadi string xml seperti ini ...
<A>
<p>
C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,`)\two
</p>
<p>
.dots
</p>
<p>
.txt
</p>
</A>
2.) Setelah diformat seperti ini, sepele untuk memilih p
elemen terakhir menggunakan sintaks xpath //p[last()]
.
REGEXEXTRACT(A1, "\.([^.]*)$")