Làm cách nào để có được phần mở rộng tệp trong MS Excel?


10

Tôi có một cột chứa đường dẫn tập tin. Tôi muốn tạo một cột khác chỉ chứa phần mở rộng của các đường dẫn. Làm thế nào tôi có thể làm điều này trong Microsoft Excel?


1
Đối với bất kỳ ai đang tìm cách làm điều này trong Bảng tính Google, bạn có thể sử dụngREGEXEXTRACT(A1, "\.([^.]*)$")
Joe

Câu trả lời:


20
=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


2
Lưu ý rằng điều này chỉ hoạt động đối với các phần mở rộng tệp có bốn ký tự hoặc ngắn hơn.
Tim Robinson

1
Bạn chỉ có thể thay đổi 5 thành 6 hoặc bất cứ điều gì, phải không?
Devil's Advocate

Không, điều đó gây ra vấn đề.
Devil's Advocate

4

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,".","")))))

làm việc một điều trị! Cảm ơn các giải pháp sao chép / dán nhanh chóng. Hoạt động cho phần mở rộng tệp với phần mở rộng tệp 2 đến 7 ký tự với đầy đủ đường dẫn và ký hiệu không gian tên trong tên tệp.
Zephan Schroeder

2

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


0

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.


Đọc câu hỏi của bạn đó là câu trả lời tôi sẽ đưa ra.
VerGuy

Tôi nghĩ rằng câu hỏi thực sự ở đây là: làm thế nào để tìm đúng "." trong Excel.
petersohn

Phần mở rộng không phải là 3 ký tự. @pertersohn: Vâng, bạn nói đúng.
Nam G VU

0

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.

Nguồn

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: &'

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 pphần tử cuối cùng bằng cú pháp xpath //p[last()].

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.