소프트웨어 엑셀에서 정규식 사용, 내장 함수 추가
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
배열함수는 위쪽은 숫자 아닌 곳에서 에러를 내고 그 위치를 찾는 것이고,
아래는 알파벳이 참조 주소로 쓰이는 것에 착안하여 셀주소 지정에서 에러 형태로 위치를 찾습니다. ^^;
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
3503 | 소프트웨어| TC 선택한 파일명으로 폴더 만들기, 이동하기 [16] | 지후빠 | 1485 | 7 | 09-14 |
3502 | 소프트웨어| 엑셀 사용자 정의 함수와 내장 함수 활용 [6] | 지후빠 | 2444 | 7 | 09-13 |
3501 | 윈 도 우| Windows 10 최신 프리뷰 ISO 다운로드 하는 법 [9] | 디폴트 | 4430 | 14 | 09-07 |
3500 | 소프트웨어| 선택한 파일명으로 Everything에서 검색 [17] | 지후빠 | 2382 | 8 | 09-04 |
» | 소프트웨어| 엑셀에서 정규식 사용, 내장 함수 추가 [6] | 지후빠 | 3436 | 6 | 08-26 |
3498 | 소프트웨어| VMware Workstation Pro 사용시 오류 해결법 [1] | 굿듀님스토 | 1766 | 3 | 08-25 |
3497 | 소프트웨어| [팁] 크롬 버전 확인하기 [8] | suk | 3169 | 7 | 08-10 |
3496 | 기 타| W3W - 새로운 지도 위치 표기법 [3] | asklee | 2992 | 3 | 08-06 |
3495 | 기 타| [추가] EasyDrv의 버전 표기 방식 [5] | suk | 2709 | 10 | 08-06 |
3494 | 소프트웨어| MS edge 비활성화 방법 [12] | solis | 5845 | 3 | 07-26 |
3493 | 윈 도 우| 파이어폭스 퀀텀(v57)이전 버전의 애드온 간단 설치법(페일... [5] | 빛나는길 | 2173 | 5 | 07-25 |
3492 | 소프트웨어| 레인미터로 아이콘배경색 모양 변경하기 [6] | 갑파니 | 1636 | 5 | 07-23 |
3491 | 윈 도 우| Windows 10 클립보드 기록 - 버전1809 부터 홈에서도 가능 [6] | suk | 1866 | 4 | 07-22 |
3490 | 소프트웨어| Win10XPE - 작업줄 우측 클릭. 현재 StartisBack 에서 지원. [3] | 입니다 | 1870 | 8 | 07-19 |
3489 | 소프트웨어| Win10XPE - Desktop.INI 삭제 과정 안 보이게 하기. [3] | 입니다 | 1237 | 8 | 07-19 |
3488 | 소프트웨어| 레인 스킨 변신 설명(테마 변경) [4] | 갑파니 | 1509 | 5 | 07-19 |
3487 | 윈 도 우| ms 홈페이지의 iso 빨리 확인하는 방법 [4] | suk | 2896 | 8 | 07-14 |
3486 | 윈 도 우| 언어만 변경하면 코타나를 사용할수 있다??? [5] |
|
2003 | 2 | 07-13 |
3485 | 소프트웨어| 시간 스킨 활용 방법 [8] | 갑파니 | 1949 | 8 | 07-11 |
3484 | 윈 도 우| 윈도우에 훌륭한 화면캡쳐툴이 내장되어있다는거 아시나요? ★ [22] | Star★Bros | 8744 | 17 | 06-28 |
엑셀 2013에서 작동 불
첨부파일은 이상없네요
첨부파일 이미지 A1 이 아니라 A2 인것 같은데요~