- 최초 작성일: 2000-02-10
- 최종 수정일: 2026-09-29
- 조회수: 22 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 문자열 중에서 숫자만 발췌하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
질문 하나
게시판에 올리시는 TIPS 잘 보고 있습니다.
아침마다 어떤 내용이 올라와 있을까 기대가 됩니다.
메토탈클리어치약115G
코롱린스엔젤600
메토탈클리어치약115G
비타민헤어팩750겸용
비타민헤어팩750겸용
메토탈클리어치약160G
헤라하이드베일마스크 10EA
코롱코롱라임샴550IN
오늘은 한가지 질문이 있어서 처음으로 메일을 띄웁니다.
위와 같은 자료가 있을 때 각각의 셀에서 숫자만 추출할 수 있는 방법은 없는지요?
즉 첫째 셀에서는 115, 두번째에서는 600… 이런 식으로…
Server에서 자료를 가져와서 사용하고 있는데 다른 것은 해결이 되었는데 용량을 따로
입력시켜야 하는 불편함이 있어서요.
계속 좋은 내용 기대합니다.
주말 잘 보내세요.
문자열 중에서 숫자만 발췌하기
핵심 요약
- 기본 함수만으로 처리하기 어려운 작업은 VBA 사용자 정의 함수로 기능을 직접 만들 수 있습니다.
- 문자열을 한 글자씩 검사해 IsNumeric이 참인 문자만 이어 붙이면 숫자 부분만 추출할 수 있습니다.
- 사용자 정의 함수를 추가 기능으로 등록하면 워크시트에서 일반 함수처럼 반복해서 사용할 수 있습니다.
왜 이런 질문이 안오나 했습니다. 안될 것 없지요. 수작업으로 가능한 것이면 모두 자동화가 가능한 것이니까… 문자열 함수에 대해 연구하다보면 이같은 의문을 자주 갖게 되지요.
엑셀 자체적으로 이런 문제를 해결할 수 있는 함수는 제공하지 않습니다. 하지만 실망하지 마세요.
엑셀에서 기본적으로 제공하는 여러가지 함수들, 즉 sum(), if(), left(), right(), vlookup(),… 등의 함수를 내장함수(Built-in Function)라고 하고 사용자가 직접 만드는 함수는 사용자정의함수(User-defined Function)이라고 합니다. 이런 경우에는 Visual Basic으로 간단한 코딩작업만 하면 가능합니다.
혹시 비주얼베이직이나 매크로에 익숙한 분이라면 모듈시트를 한장 만든다음, 아래의 코드를 복사해서 "숫자만" 이라는 사용자정의 함수를 하나 만든다음 사용하시면 되겠지요. 코드는 아주 간단하지요?
정보기술 업무개선 과정을 수강하셨거나 매크로, 비주얼베이직에 대해 조금 아시는 분은 piece of cake ?!@#$ 혹시라도 '기억이 안난다. 그런데 코드에 관심이 있다. 설명을 바란다.' 하시는 분은 메일 주세요. 초보님들이 얄궂은 코드를 보고 지레 겁먹을까봐 코드에 대한 해설은 생략합니다.
Function 숫자만(문자열) As Variant
Dim strTemp As String
Dim intNum As Integer
For intNum = 1 To Len(문자열)
If IsNumeric(Mid(문자열, intNum, 1)) Then
strTemp = strTemp & Mid(문자열, intNum, 1)
End If
Next intNum
숫자만 = strTemp
End Function
"숫자만추출하기.xla"라는 애드인(Add-in) 파일을 함께 띄웁니다. 애드인 파일은 다들 사용하실 수 있겠지요(또 설명해 달라구요?) 다시 한번 설명해 드리지요 뭐, Ubungen macht Meister, 연습이 대가를 만드는 것이니까.
참고: 도구 - 추가기능 메뉴는 구버전 기준입니다. 최신 Excel에서는 파일 - 옵션 - 추가 기능에서 관리 상자를 Excel 추가 기능으로 두고 이동 버튼을 눌러 같은 방식으로 등록합니다.
(1) 숫자만추출하기.xla 파일을 다운 받습니다. (2) "도구-추가기능" 메뉴를 선택한 뒤 "찾아보기" 버튼을 눌러 다운받은 위치를 지정합니다. (아래에서는 AddIns라는 폴더에 파일이 있는 경우입니다)
(3) 다시 "도구-추가기능"을 눌러보면 아래와 같이 "숫자만추출하기"라는 항목이 추가되어 있을 것입니다. 체크표시를 해 주시고…
(4) 이제 적용시키는 단계만 남았네요.
| B | 숫자발췌 | |||
| 104 | 메토탈클리어치약115G | 115 | |
|
| 105 | 코롱린스엔젤600 | 600 | |
|
| 106 | 메토탈클리어치약115G | 115 | |
|
| 107 | 비타민헤어팩750겸용 | 750 | |
|
| 108 | 비타민헤어팩750겸용 | 750 | |
|
| 109 | 메토탈클리어치약160G | 160 | |
|
| 110 | 헤라하이드베일마스크 10EA | 10 | |
|
| 111 | 코롱코롱라임샴550IN | 550 | |
숫자만() 함수를 사용하는 방법은 매우 간단합니다. 위에서 보듯이 숫자만 추출할 셀을 지정만 해주면 되지요.
비주얼베이직에 대한 설명은 언제 할 것이냐? 본격적인 설명을 드리지 않는 것은 아직 비주얼베이직이나 매크로에 대해서는 별로 질문하시는 분이 없어서 아직은 저변이 확대되지 않았다고 생각하기 때문입니다. 좀더 활성화가 되면 그 때 시작하도록 하겠습니다.
오늘은 여기까지…
정리 — 문자열 중에서 숫자만 발췌하기
| 구분 | 내용 |
|---|---|
| 문제 | 문자와 숫자가 섞인 셀에서 숫자만 추출 |
| 해결 | Visual Basic으로 사용자 정의 함수 숫자만 작성 |
| 동작 | 문자열을 한 글자씩 검사해 IsNumeric이 참인 글자만 이어 붙임 |
| 사용 | =숫자만(B104) |
| 배포 | 숫자만추출하기.xla 애드인 파일을 도구 - 추가기능에서 등록 |
| 예 | 메토탈클리어치약115G에서 115, 코롱린스엔젤600에서 600 |
자주 묻는 질문 (FAQ)
Q1. 문자열에서 숫자만 추출하려면 어떻게 하나요?
엑셀 기본 함수로는 해결하기 어려우므로 Visual Basic 모듈에 사용자 정의 함수를 만들어 사용합니다. 문자열을 한 글자씩 검사해 숫자인 글자만 이어 붙이면 됩니다.
Q2. 사용자 정의 함수는 무엇인가요?
엑셀이 기본으로 제공하는 sum, if, left 같은 내장함수와 달리 사용자가 직접 만드는 함수입니다.
Q3. 만든 함수를 추가기능으로 쓰려면 어떻게 하나요?
애드인 파일로 만들어 추가기능 대화상자에서 찾아보기로 파일 위치를 지정한 뒤 해당 항목에 체크표시를 합니다.
마치며
반복해서 필요한 문자열 처리는 사용자 정의 함수로 한 번 만들어 두면 워크시트에서 일반 함수처럼 쓸 수 있습니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.