ฉันมีคอลัมน์ที่มีเส้นทางไฟล์ ฉันต้องการสร้างคอลัมน์อื่นที่มีส่วนขยายของเส้นทางเท่านั้น ฉันจะทำสิ่งนี้ใน Microsoft Excel ได้อย่างไร
ฉันมีคอลัมน์ที่มีเส้นทางไฟล์ ฉันต้องการสร้างคอลัมน์อื่นที่มีส่วนขยายของเส้นทางเท่านั้น ฉันจะทำสิ่งนี้ใน Microsoft Excel ได้อย่างไร
คำตอบ:
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")
สูตรนี้จะมีประโยชน์หากคุณมีจุดในชื่อไฟล์มากกว่าหนึ่งจุด
นำมาจากคำตอบอื่น (เปลี่ยนเพื่อหาจุดและไม่เว้นวรรค):
=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
คำตอบ 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
=RIGHT(A1,3)
สมมติว่าคุณมีส่วนขยายที่จัดรูปแบบอย่างที่คุณสามารถทำเช่นนี้ได้อย่างรวดเร็วเป็น โซลูชันที่แข็งแกร่งยิ่งขึ้นจะพบดัชนีด้านขวาสุด.
จากนั้นแยกอักขระที่เหลืออยู่
ฉันเจอสิ่งนี้ซึ่งเป็นวิธีที่ง่ายที่สุดที่ฉันเคยเห็น ...
=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()]
REGEXEXTRACT(A1, "\.([^.]*)$")