Bagaimana cara mendapatkan ekstensi file di MS Excel?

10

Saya memiliki kolom yang berisi jalur file. Saya ingin membuat kolom lain yang hanya berisi ekstensi jalur. Bagaimana saya bisa melakukan ini di Microsoft Excel?

Nam G VU
sumber
1
Bagi siapa pun yang mencari cara ini di Google Spreadsheet, Anda dapat menggunakanREGEXEXTRACT(A1, "\.([^.]*)$")
Joe

Jawaban:

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

Formula ini akan berguna jika Anda memiliki lebih dari satu titik dalam nama file

Kirill
sumber
2
Perhatikan bahwa ini hanya berfungsi untuk ekstensi file yang empat karakter atau lebih pendek.
Tim Robinson
1
Anda bisa mengubah 5 ke 6 atau apa pun, bukan?
Pengacara Setan
Tidak, itu yang menyebabkan masalah.
Pengacara Setan
4

Diambil dari jawaban lain (diubah untuk mencari titik dan bukan spasi):

=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
pengguna273281
sumber
berhasil! Terima kasih atas solusi salin / tempel cepat. Berfungsi untuk ekstensi file dengan 2 hingga 7 karakter ekstensi file dengan path lengkap dan notasi spasi nama dalam nama file.
Zephan Schroeder
2

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

Adarsh
sumber
0

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.

ta.speot.is
sumber
Membaca pertanyaan Anda itulah jawaban yang akan saya berikan.
VerGuy
Saya pikir pertanyaan sebenarnya di sini adalah: bagaimana menemukan yang paling tepat "." dalam Excel.
petersohn
Ekstensi tidak selalu dalam 3 karakter. @pertersohn: Ya, Anda benar.
Nam G VU
0

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.

Sumber

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 pelemen terakhir menggunakan sintaks xpath //p[last()].

u8it
sumber