Câu trả lời:
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")
Công thức này sẽ hữu ích nếu bạn có nhiều hơn một dấu chấm trong tên tệp
Lấy từ một câu trả lời khác (thay đổi để tìm dấu chấm và không phải dấu cách):
=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
Câu trả lời Cyril chỉ hoạt động nếu phần mở rộng có 3 hoặc 4 ký tự và câu trả lời của người dùng273281 không hoạt động khi có .
(dấu chấm ) trong tên tệp.
Do đó tôi đã tìm ra một cách mới để đạt được điều này,
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
Lưu ý: aswer của user273281 không hoạt động trong trường hợp tên tệp 1. Macro based file.zip
. Nó trở lại. Macro based file.zip
Giả sử bạn có các tiện ích mở rộng được định dạng độc đáo, bạn có thể thực hiện việc này nhanh chóng =RIGHT(A1,3)
. Một giải pháp mạnh mẽ hơn sẽ tìm chỉ mục của ngoài cùng bên phải .
và sau đó trích xuất các ký tự còn lại.
Tôi đã xem qua đây, đó là giải pháp đơn giản nhất tôi từng thấy ...
=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")
Nó hoạt động vì nó phân tách bất kỳ ký tự nào sau khoảng thời gian cuối cùng cách xa tất cả các ký tự khác trong 50 dấu chấm hoặc bất kỳ số nào bạn chọn. Sau đó, bạn có thể chọn 50 ký tự ngoài cùng bên phải biết rằng bạn không chọn gì ngoài các ký tự mở rộng và một loạt các dấu chấm. Thay thế các giai đoạn và bạn đã sẵn sàng để đi.
Thay thế: Phân tích cú pháp XML
Một mẹo gọn gàng đôi khi tôi sử dụng để phân tích chuỗi nói chung là tận dụng FilterXML()
hàm (Excel 2013 trở lên). Chiến lược cơ bản là sử dụng Substitute()
để định dạng chuỗi của bạn theo cách phân tích cú pháp qua các phần tử trong chuỗi xml và sau đó bạn có thể sử dụng cú pháp xpath để điều hướng thuận tiện các phần tử được phân tích cú pháp của mình. Sử dụng chiến lược này, nhận được một phần mở rộng sẽ trông như thế này ...
=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")
Nếu bạn không quen với xml, điều này có vẻ đáng sợ, nhưng nếu bạn có thể nắm bắt được những gì đang diễn ra, tôi thấy nó sạch hơn, linh hoạt hơn và dễ nhớ hơn các phương pháp thay thế sử dụng len (), thay thế (), vv Một lý do tại sao nó đẹp hơn là vì chỉ có một tham chiếu ô.
Ký tự bất hợp pháp
Có hai ký tự được phép trong đường dẫn nhưng không có trong xml: &
và'
Phương trình trên sẽ hoạt động nếu không có các ký tự này, nếu không, chúng sẽ cần được xử lý như thế này ...
=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")
Thí dụ
Giả sử chúng ta có một đường dẫn tệp khó chịu như thế này:
C: \ Folder1 \ Folder2 \ (ký tự xấu xí! @ # $% ^ () _ + = {} ;;, `) \ hai.dots.LongExt
1.) Substitution()
Phần này sẽ chuyển đổi nó thành một chuỗi xml như thế này ...
<A>
<p>
C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,`)\two
</p>
<p>
.dots
</p>
<p>
.txt
</p>
</A>
2.) Sau khi được định dạng như thế này, thật đơn giản để chọn ra p
phần tử cuối cùng bằng cú pháp xpath //p[last()]
.
REGEXEXTRACT(A1, "\.([^.]*)$")