티스토리 뷰
출처 : http://taskin_rits.blog.me/100174815434
내가 엑셀 관련 포스팅을 하게 될 줄은 몰랐다...
근데 진짜 너무 신기한 발상이라서...
엑셀에서는 문자열 내에 특정 문자열이 몇 번째에 존재하는지 알려주는 함수 FIND()가 있다.
하지만 이 함수는 왼쪽 -> 오른쪽 검색을 지원하고,
오른쪽 -> 왼쪽 검색을 지원하는 함수 (RFIND()같은거...)는 존재하지 않는다.
하지만,
내가 오늘 파일 경로로부터 확장자를 얻으려고 관련 내용을 검색해보다...
이 글 맨 위에 적은 링크에서 엄청 신박한 해결책을 발견했다.
결론부터 말하자면 이렇게 쓴다.
FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))
구현 원리는 이렇다.
찾고자 하는 문자가 "."이라고 하자,
SUBSTITUTE라는 함수는 문자열 내의 특정 문자를 원하는 문자로 치환해주는 기능을 수행하는데,
이걸 이용해서 문자열 내의 "."를 모두 ""(빈문자열)로 바꾼다.
그러면 문자열의 총 길이가 줄어들겠지?
줄어든 길이가 바로 "."가 등장하는 횟수다.
다시 SUBSTITUTE를 설명하자면, 이 함수는 네 번째 인자를 넣을 수 있다.
네 번째 인자의 의미는 다음과 같다.
"치환하고자 하는 문자열이 여러개가 올 때, 몇 번째 문자열을 치환할 것인지 정한다."
그래서 첫 번째에서 구했던 "."가 등장하는 횟수를 SUBSTITUTE의 네 번째 인자에다가 넣으면
맨 마지막에 등장하는 "."의 위치에 특정 문자(나는 "|"로 했다)를 넣어준다.
이제 치환된 특정 문자를 FIND로 찾아주기만 하면 Reversed Find가 구현된다.
무에서 유를 창조하는 듯한 어느 양키의 실력에...
난 감탄해버렸다... ㅠㅠ
--------------------------------------------------------------------------
저도 감탄 요................
엑셀계의 혁신.
<응용 사례1>
원래 값 : /data2/wasdata/wasdata/musiconApp/ncsWeb/js/login.js
공식 : =RIGHT(E155, LEN(E155)-FIND("|",SUBSTITUTE(E155,"/","|",LEN(E155)-LEN(SUBSTITUTE(E155,"/","")))))
결과 값 : login.js
<응용 사례2>
원래 값 : /data2/wasdata/wasdata/musiconApp/ncsWeb/js/login.js
공식 : =LEFT(E155, FIND("|",SUBSTITUTE(E155,"/","|",LEN(E155)-LEN(SUBSTITUTE(E155,"/","")))))
결과 값 : /data2/wasdata/wasdata/musiconApp/ncsWeb/js/
'program' 카테고리의 다른 글
eclipse 메모리 및 옵션 설정 (0) | 2014.08.31 |
---|---|
JSP 게시판 업그레이드 - Spring 연동 3 (구현) (0) | 2014.08.27 |
스프링 mybati 연동 정리 (0) | 2014.08.25 |
[Spring MVC + Maven] Project 생성하기 (0) | 2014.08.23 |
spring 설치 시나리오 (0) | 2014.08.21 |