จะรับนามสกุลไฟล์ใน MS Excel ได้อย่างไร


10

ฉันมีคอลัมน์ที่มีเส้นทางไฟล์ ฉันต้องการสร้างคอลัมน์อื่นที่มีส่วนขยายของเส้นทางเท่านั้น ฉันจะทำสิ่งนี้ใน Microsoft Excel ได้อย่างไร


1
สำหรับทุกคนที่กำลังมองหาวิธีการนี้ใน Google Spreadsheet คุณสามารถใช้REGEXEXTRACT(A1, "\.([^.]*)$")
Joe

คำตอบ:


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

สูตรนี้จะมีประโยชน์หากคุณมีจุดในชื่อไฟล์มากกว่าหนึ่งจุด


2
โปรดทราบว่าจะใช้งานได้เฉพาะกับนามสกุลไฟล์ที่มีความยาวไม่เกินสี่ตัวอักษร
ทิมโรบินสัน

1
คุณสามารถเปลี่ยน 5 เป็น 6 หรืออะไรก็ได้
ผู้ให้การสนับสนุนของมาร

ไม่นั่นเป็นสาเหตุของปัญหา
ผู้ให้การสนับสนุนของปีศาจ

4

นำมาจากคำตอบอื่น (เปลี่ยนเพื่อหาจุดและไม่เว้นวรรค):

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

ทำงานได้ดี! ขอบคุณสำหรับวิธีคัดลอก / วางอย่างรวดเร็ว ใช้งานได้กับนามสกุลไฟล์ที่มีนามสกุลไฟล์ 2 ถึง 7 ตัวอักษรพร้อมด้วยพา ธ เต็มและสัญลักษณ์เนมสเปซในชื่อไฟล์
Zephan Schroeder

2

คำตอบ Cyril ใช้งานได้เฉพาะถ้านามสกุลเป็น 3 หรือ 4 ตัวอักษรและผู้ใช้ 273281 คำตอบไม่ทำงานเมื่อมี.(จุด) ในชื่อไฟล์

ดังนั้นฉันจึงหาวิธีใหม่ในการบรรลุเป้าหมายนี้

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

หมายเหตุ: aswer user273281 1. Macro based file.zipไม่ได้ทำงานสำหรับกรณีที่ชื่อไฟล์เป็น มันกลับมา. Macro based file.zip


0

=RIGHT(A1,3)สมมติว่าคุณมีส่วนขยายที่จัดรูปแบบอย่างที่คุณสามารถทำเช่นนี้ได้อย่างรวดเร็วเป็น โซลูชันที่แข็งแกร่งยิ่งขึ้นจะพบดัชนีด้านขวาสุด.จากนั้นแยกอักขระที่เหลืออยู่


อ่านคำถามของคุณซึ่งเป็นคำตอบที่ฉันจะให้
VerGuy

ฉันคิดว่าคำถามที่แท้จริงที่นี่คือ: วิธีการหาที่ถูกต้อง "." ใน Excel
petersohn

นามสกุลไม่ได้เป็น 3 ตัวอักษร @pertersohn: ใช่คุณพูดถูก
Nam G VU

0

ฉันเจอสิ่งนี้ซึ่งเป็นวิธีที่ง่ายที่สุดที่ฉันเคยเห็น ...

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

มันใช้งานได้เพราะมันจะแยกตัวละครใด ๆ หลังจากช่วงเวลาสุดท้ายออกจากตัวละครอื่น ๆ ทั้งหมดโดย 50 จุดหรือจำนวนที่คุณเลือก จากนั้นคุณสามารถเลือกอักขระที่ถูกต้องสูงสุด 50 ตัวที่รู้ว่าคุณไม่ได้เลือกอะไรเลยนอกจากอักขระส่วนขยายและช่วงเวลาต่างๆ ทดแทนช่วงเวลาและคุณพร้อมที่จะไป

แหล่ง

ทางเลือก: การแยกวิเคราะห์ XML


เคล็ดลับเรียบร้อยที่ฉันใช้ในการแยกสตริงโดยทั่วไปคือการใช้ประโยชน์จากFilterXML()ฟังก์ชัน (Excel 2013 ขึ้นไป) กลยุทธ์พื้นฐานคือการใช้Substitute()ในการจัดรูปแบบสตริงของคุณในลักษณะที่มีการแยกวิเคราะห์องค์ประกอบในสตริง xml และจากนั้นคุณสามารถใช้ไวยากรณ์xpathเพื่อนำทางองค์ประกอบแยกวิเคราะห์ของคุณได้อย่างสะดวก การใช้กลยุทธ์นี้การรับส่วนขยายจะมีลักษณะเช่นนี้ ...

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

หากคุณไม่คุ้นเคยกับ xml สิ่งนี้อาจดูน่ากลัว แต่ถ้าคุณเข้าใจว่าเกิดอะไรขึ้นฉันคิดว่ามันสะอาดและยืดหยุ่นกว่าและจำได้ง่ายกว่าวิธีอื่นโดยใช้ len (), replace (), ฯลฯ เหตุผลหนึ่งที่ทำไมมันถึงดีกว่าก็เพราะมีเพียงการอ้างอิงเซลล์เดียว

ตัวละครที่ผิดกฎหมาย

มีอักขระสองตัวที่ได้รับอนุญาตในเส้นทาง แต่ไม่ใช่ใน xml: &และ'

สมการข้างต้นจะใช้ได้หากไม่มีตัวละครเหล่านี้มิฉะนั้นพวกเขาจะต้องได้รับการจัดการบางอย่างเช่นนี้ ...

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

ตัวอย่าง

สมมติว่าเรามีเส้นทางไฟล์ที่น่ารังเกียจดังนี้:

C: \ Folder1 \ Folder2 \ (อักขระที่น่าเกลียด! @ # $% ^ () _ + = {} ;;, `) \ two.dots.LongExt

1. ) Substitution()ส่วนจะแปลงเป็นสตริง xml เช่นนี้ ...

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

2. ) เมื่อรูปแบบเช่นนี้มันน่ารำคาญที่จะเลือกออกสุดท้ายองค์ประกอบโดยใช้ไวยากรณ์p XPath//p[last()]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.