소프트웨어 엑셀에서 정규식 사용, 내장 함수 추가
2019.08.26 23:57
하단에 내장함수로만 해결한 내용을 추가하였습니다. 혹시 오류있으면 댓글로 남겨주세요~.
안녕하세요. 질문 https://windowsforum.kr/12070953 에 어울릴 것 같아서 간단히 정리하여 보았습니다.
[참고하실만한 내용]
숫자와 영문이 혼합되어 있는 셀에서 영문만 골라내는 수식과 사용자정의함수; https://dorobo.tk/492
구글에서 "엑셀 정규식"으로 검색하면 자료가 많네요;
- https://www.google.co.kr/search?q=%EC%97%91%EC%85%80+%EC%A0%95%EA%B7%9C%EC%8B%9D
[설명]
사용자 정의 함수로 정규식을 사용할 수 있게 합니다. 엑셀파일 열어서 alt + F11 누르면 함수를 볼 수 있습니다.
1. FindENG 사용자 함수; 질문에 맞게 영문 시작 문자를 찾아서 반환합니다.
- FIND(FindENG(A2),A2) 함수로 위치를 반환합니다.
2. RegExpFind 사용자 함수; 정규식 패턴을 직접 입력하여 문자를 찾아서 반환합니다.
- FIND(RegExpFind("[a-z]",A4),A4) 1번과 같은 결과를 냅니다.
3. 2번의 예로써 FIND(RegExpFind("[a-z]+",A6),A6) 은 연속된 영어 문자열을 찾아서 반환합니다.
- FIND(RegExpFind("[a-z]+",A6),A6) 단어의 시작 위치를 반환합니다.
4. 한글 단어 찾는 예제입니다.
언젠가 해보고 싶었던 것이라 찾아보았습니다. ^^
PS. 숫자 아닌 문자 시작 위치를 찾는 것은 다음과 같이 내장 함수로만 가능합니다. 참고 하세요~.
=MATCH(TRUE,ISERROR(VALUE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))),0)
입력할때 ctrl+shift+enter 하여서 배열 수식으로 입력해야 합니다. 그럼 mid 함수로 낱자로 모두 분리하여
value 함수로 숫자가 아닌 위치에서 에러가 나고 그 에러 위치를 match 함수가 잡아냅니다.
출처; https://www.extendoffice.com/documents/excel/3790-excel-find-position-of-first-letter-in-string.html
주말에 시간되어 내장 함수로만 영문 위치를 찾도록 하여 보았습니다. 원 질문자님이 보실지 모르겠지만 도움되셨으면 합니다.
=MATCH(3,ERROR.TYPE((INDIRECT(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)&"1"))),0)
위 함수중 A1 부분 2곳만 문자열이 있는 셀주소로 고치고 배열함수로 입력하세요. ctrl + shift + enter
댓글 [6]
-
코리아센 2019.08.27 09:54
-
지후빠 2019.08.27 13:15
단순 오타인 A1 -> A2 로 수정했습니다.
위 에러는 사용자 정의 함수를 잘 못 호출해서 생기는 오류입니다.
사용자 정의 함수는 해당 엑셀 파일이 열린 상태에서 사용가능합니다.
"함수 마법사 -> 사용자 정의 함수"에서 선택하세요.
alt+F11 누르면 모듈에 다음과 같은 코드가 들어 있습니다.
새로운 파일에 적용시에도 모듈을 만들어 다음 코드를 추가하시면 됩니다.
Option Explicit
Function RegExpFind(Pttrn, inData)
With CreateObject("Vbscript.RegExp")
.IgnoreCase = True
.Pattern = Pttrn
If .Test(inData) Then
RegExpFind = .Execute(inData)(0)
Else
RegExpFind = 0
End If
End With
End Function
Function FindENG(inData)
With CreateObject("Vbscript.RegExp")
.IgnoreCase = True
.Pattern = "[a-z]"
If .Test(inData) Then
FindENG = .Execute(inData)(0)
Else
FindENG = 0
End If
End With
End Function
-
Nic네임 2019.08.28 15:24
엑셀 함수에서 정규식이 먹히는지 처음 알았네요. ㅎ
-
kungms 2019.08.28 17:47
저도 엑셀에서 정규식이 되는 걸 덕분에 처음 알게 됐습니다. 좋은 정보 감사합니다.
-
에메랄드캐슬 2019.09.06 14:22
원질문 질문자입니다
감사합니다
배열수식은 일단 먼저 가져다 쓰고 분석해봐야겠네요 함수보니 눈돌아가네요 ^^
-
지후빠 2019.09.21 22:05
배열함수는 위쪽은 숫자 아닌 곳에서 에러를 내고 그 위치를 찾는 것이고,
아래는 알파벳이 참조 주소로 쓰이는 것에 착안하여 셀주소 지정에서 에러 형태로 위치를 찾습니다. ^^;
엑셀 2013에서 작동 불
첨부파일은 이상없네요
첨부파일 이미지 A1 이 아니라 A2 인것 같은데요~