답변:
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")
이 수식은 파일 이름에 둘 이상의 점이있는 경우 유용합니다
다른 대답 에서 가져 왔습니다 (공백이 아닌 점을 찾도록 변경됨).
=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
Cyril 응답은 확장명이 3 자 또는 4 자이고 .
파일 이름에 (마침표) 가있을 때 user273281 응답이 작동하지 않은 경우에만 작동합니다 .
그래서 나는 이것을 달성하는 새로운 방법을 찾았다.
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
참고 : 파일 이름이 인 경우 user273281의 aswer가 작동하지 않았습니다 1. Macro based file.zip
. 반환. Macro based file.zip
나는 이것을 보았습니다. 이것은 내가 본 가장 간단한 솔루션입니다 ...
=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 (), replacement (), 더 좋은 이유 중 하나는 셀 참조가 하나뿐이기 때문입니다.
불법 문자
이 경로에서가 아니라 XML에서 허용되는 두 개의 문자는 다음과 같습니다 &
과'
위의 방정식은 이러한 문자가 없으면 작동합니다. 그렇지 않으면 다음과 같이 처리해야합니다.
=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")
예
다음과 같은 불쾌한 파일 경로가 있다고 가정하십시오.
C : \ Folder1 \ Folder2 \ (ugly characters! @ # $ % ^ () _ + = {} ;;,`) \ 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, "\.([^.]*)$")