MS Excel'de dosya uzantısı nasıl alınır?


10

Dosya yollarını içeren bir sütun var. Yalnızca yolların uzantılarını içeren başka bir sütun yapmak istiyorum. Bunu Microsoft Excel'de nasıl yapabilirim?


1
Google E- REGEXEXTRACT(A1, "\.([^.]*)$")
Joe

Yanıtlar:


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

Dosya adında birden fazla noktanız varsa bu formül yararlı olacaktır


2
Bunun yalnızca dört karakter veya daha kısa dosya uzantıları için geçerli olduğunu unutmayın.
Tim Robinson

1
5'i 6 ya da her neyse değiştirebilirsiniz, değil mi?
Şeytan Avukatı

Hayır, bu sorunlara neden oluyor.
Şeytan Avukatı

4

Alındığı başka bir yanıt (noktalar ve boşluklar aramaya değişti):

=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))

bir tedavi çalışır! Hızlı kopyalama / yapıştırma çözümü için teşekkürler. Dosya adında tam yol ve ad alanı gösterimi içeren 2 ila 7 karakterli dosya uzantılarına sahip dosya uzantıları için çalışır.
Zephan Schroeder

2

Cyril yanıtı, yalnızca uzantı 3 veya 4 karakter olduğunda .ve dosya adında (nokta) olduğunda user273281 yanıtı çalışmadığında çalışır .

Dolayısıyla bunu başarmanın yeni bir yolunu buldum,

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

Not: user273281 kodu, dosya adının bulunduğu durumda çalışmadı 1. Macro based file.zip. Geri döner. Macro based file.zip


0

Güzel biçimlendirilmiş uzantılara sahip olduğunuzu varsayarsak, bunu hızlı bir şekilde yapabilirsiniz =RIGHT(A1,3). Daha sağlam bir çözüm, en sağdaki dizini bulur .ve ardından kalan karakterleri çıkarır.


Sorunuzu okuduğum cevap bu.
VerGuy

Bence burada asıl soru şu: en doğru olanı nasıl bulacağımız. Excel'de.
petersohn

Uzantı 3 karakterde her zaman değil. @pertersohn: Evet, haklısın.
Nam G VU

0

Buna rastladım, gördüğüm en basit çözüm ...

=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")

Çalışır, çünkü son noktadan sonraki tüm karakterleri diğer karakterlerden 50 noktaya kadar veya seçtiğiniz herhangi bir sayıdan ayırır. Daha sonra, uzatma karakterleriniz ve bir dizi nokta dışında hiçbir şey seçmediğinizi bilerek en sağdaki 50 karakteri seçebilirsiniz. Periyotları değiştirin ve gitmeye hazırsınız.

Kaynak

Alternatif: XML Ayrıştırma


Genelde dize ayrıştırma için kullandığım düzgün bir hile FilterXML()işlevden yararlanmaktır (Excel 2013 ve üstü). Temel strateji, Substitute()dizenizi xml dizesindeki öğeler arasında ayrıştırılacak şekilde biçimlendirmek ve daha sonra ayrıştırılmış öğelerinizde kolayca gezinmek için xpath sözdizimini kullanabilirsiniz . Bu stratejiyi kullanarak, uzantı almak şu şekilde görünecektir ...

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

Eğer xml'e aşina değilseniz, bu göz korkutucu görünebilir, ancak neler olduğunu kavrayabilirseniz, len (), substitute () kullanarak alternatif yaklaşımlardan daha temiz, daha esnek ve hatırlanması daha kolay olduğunu düşünüyorum Daha güzel olmasının bir nedeni, sadece bir hücre referansı olmasıdır.

Yasadışı karakterler

Yollarda izin verilen ancak xml'de izin verilmeyen iki karakter vardır: &ve'

Bu denklemler yoksa yukarıdaki denklem işe yarayacaktır, aksi takdirde böyle bir şeyle ele alınması gerekecektir ...

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

Misal

Diyelim ki böyle kötü bir dosya yolumuz var:

C: \ Klasör1 \ Klasör2 \ (çirkin karakterler! @ # $% ^ () _ + = {} ;;, `) \ two.dots.LongExt

1.) Bölüm Substitution()böyle bir xml dizesine dönüştürecektir ...

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

2.) Bu şekilde biçimlendirildikten sonra p, xpath sözdizimini kullanarak son öğeyi seçmek önemsizdir //p[last()].

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.