오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴

엑셀 숫자만 추출하는 함수 :: ExtractNumber 사용법 및 전체 코드

셀 안의 텍스트에서 숫자만 추출하는 ExtractNumber 함수의 사용법 및 전체 명령문 동작원리를 알아봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2022. 05. 04. 18:59
URL 복사
메모 남기기 : (14)

엑셀 숫자만 추출하는 함수 :: ExtractNumber 함수 사용법 총정리

엑셀 숫자 추출 함수, 목차 바로가기
함수 구문
= ExtractNumber ( 텍스트, [시작지점], [종료지점] )

엑셀 함수만 사용하는 방법은 아래 포스트에 정리해드렸습니다.

인수 설명
인수 설명
텍스트 숫자를 추출할 값이 적힌 셀 또는 문자열입니다.
시작지점
[선택인수]
문자열에서 숫자를 추출할 시작 위치입니다. 기본값은 1 입니다.
예를들어 '5' 를 입력할 경우, 문자열의 5번째 글자부터 숫자 추출을 시작합니다.
종료지점
[선택인수]
숫자 추출을 종료할 위치입니다. 기본값은 32,767 입니다.
예를들어 '10'을 입력할 경우, 문자열의 10번째 글자까지만 참조하여 숫자를 추출합니다.
함수 사용예제
  • = ExtractNumber ( "ABC123Z" )
    '// '123' 을 반환합니다.
  • = ExtractNumber ( "1AD34-515", 7 )
    '// '515' 를 반환합니다.
  • = ExtractNumber ( "1세대-아이폰3S-블랙X13", 4, 8)
    '// '3' 을 반환합니다.
설명

ExtractNumber 함수는 VBA 매크로를 활용한 숫자 추출 사용자지정함수입니다. 매크로 사용이 어려울 경우 아래 엑셀 숫자만 추출하기 함수 공식을 활용해보세요.

ExtractNumber 함수는 지정한 셀 또는 문자열에서 숫자를 추출하는 엑셀 숫자 추출 함수입니다. 문자열의 추출 시작위치 및 종료위치를 지정하여 지정한 위치 안 에서만 숫자를 추출할 수도 있습니다.

엑셀 숫자 추출 함수 사용법 예제
지정한 위치안의 문자열에서 숫자를 추출합니다.
그 외 참고사항
  • 기존 문자열에 줄바꿈이 포함되어 있을 경우, 줄바꿈은 무시되고 하나의 줄에 숫자가 추출됩니다.
  • 숫자추출 종료위치가 시작위치보다 작을 경우, 함수는 #Value! 오류를 반환합니다.
  • 시작지점 또는 종료지점 값이 '숫자'가 아닐 경우, 기본값으로 설정됩니다. 숫자추출 시작위치의 기본값은 1, 종료위치 기본값은 32,767 (최대 문자길이) 입니다.
  • 시작지점 또는 종료지점으로 0보다 작은 값이 입력될 경우, 기본값으로 설정됩니다.

예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.

  • [엑셀VBA함수] ExtractNumber :: 숫자 추출 함수
    예제파일

엑셀 숫자 추출, ExtractNumber함수의 동작원리

ExtactNumber 함수 전체 명령문
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 ([https://www.oppadu.com](https://www.oppadu.com/))
'■ ExtractNumber 함수
'■ 텍스트에서 숫자만 추출합니다. 추출 시작 및 종료위치를 지정할 수 있습니다.
'■ 인수 설명
'_____________Val : 숫자만 추출할 텍스트 또는 셀입니다.
'__________iStart : 추출을 시작할 위치입니다. 기본값은 1 입니다.
'___________iEndl : 추출을 종료할 위치입니다. 기본값은 32767 입니다.
'###############################################################
 
Function ExtractNumber(Val, Optional iStart, Optional iEnd) As String
 
Dim i As Long
Dim Str As String
Dim match As Variant
 
If IsMissing(iStart) Then iStart = 0
If IsMissing(iEnd) Then iEnd = 32767
If iEnd <= 0 Or Not IsNumeric(iEnd) Then iEnd = 32767
If iStart <= 0 Or Not IsNumeric(iStart) Then iStart = 1
 
If iStart > iEnd Then ExtractNumber = CVErr(errvalue)
If IsObject(Val) Then Str = Val.Value Else Str = Val
 
Str = Mid(Str, iStart, iEnd - iStart + 1)
 
With CreateObject("VBScript.RegExp")
    .Pattern = "\d+"
    .Global = True
    Set match = .Execute(Str)
 
        If match.Count > 0 Then
            ExtractNumber = ""
            For i = 0 To match.Count - 1
               ExtractNumber = ExtractNumber & match(i)
            Next i
        End If
End With
 
End Function
명령문 동작원리 단계별 알아보기
  1. 오류 발생 방지를 위하여 예상되는 상황에 대한 오류처리 문구를 추가합니다.
    If IsMissing(iStart) Then iStart = 0
    If IsMissing(iEnd) Then iEnd = 32767
     
    If iEnd <= 0 Or Not IsNumeric(iEnd) Then iEnd = 32767
    If iStart <= 0 Or Not IsNumeric(iStart) Then iStart = 1
     
    If iStart > iEnd Then ExtractNumber = CVErr(errvalue)
    If IsObject(Val) Then Str = Val.Value Else Str = Val
  2. 시작위치, 종료위치에 따라 숫자추출 대상 문자열을 설정합니다.
    Str = Mid(Str, iStart, iEnd - iStart + 1)
  3. Regex (정규표현식)을 사용하여 문자열에서 숫자를 추출합니다.
    With CreateObject("VBScript.RegExp")
        .Pattern = "\d+"
        .Global = True
        Set match = .Execute(Str)
    End With
  4. 추출된 숫자를 ExtractNumber 함수로 반환한 후, 숫자 추출 명령문을 종료합니다.
            If match.Count > 0 Then
                ExtractNumber = ""
                For i = 0 To match.Count - 1
                   ExtractNumber = ExtractNumber & match(i)
                Next i
            End If

자주묻는질문

질문1. 소숫점(.)이 포함된 숫자를 추출하고 싶습니다.

소숫점을 포함한 숫자를 추출하고 싶을 경우, 명령문을 아래와 같이 변경합니다. (예: 갤럭시폴더 1.2버전 -> 1.2)

'###############################################################
'오빠두엑셀 VBA 사용자지정함수 ([https://www.oppadu.com](https://www.oppadu.com/))
'■ ExtractNumber 함수
'■ 텍스트에서 숫자만 추출합니다. 추출 시작 및 종료위치를 지정할 수 있습니다.
'■ 인수 설명
'_____________Val : 숫자만 추출할 텍스트 또는 셀입니다.
'__________iStart : 추출을 시작할 위치입니다. 기본값은 1 입니다.
'___________iEndl : 추출을 종료할 위치입니다. 기본값은 32767 입니다.
'###############################################################
 
Function ExtractNumber(Val, Optional iStart, Optional iEnd) As String
 
Dim i As Long
Dim Str As String
Dim match As Variant
 
If IsMissing(iStart) Then iStart = 0
If IsMissing(iEnd) Then iEnd = 32767
If iEnd <= 0 Or Not IsNumeric(iEnd) Then iEnd = 32767
If iStart <= 0 Or Not IsNumeric(iStart) Then iStart = 1
 
If iStart > iEnd Then ExtractNumber = CVErr(errvalue)
If IsObject(Val) Then Str = Val.Value Else Str = Val
 
Str = Mid(Str, iStart, iEnd - iStart + 1)
 
With CreateObject("VBScript.RegExp")
    ' 소숫점을 포함한 숫자를 추출합니다.
     .Pattern = "(\d+)(?:\.(\d{1,2}))?"
    .Global = True
    Set match = .Execute(Str)
 
        If match.Count > 0 Then
            ExtractNumber = ""
            For i = 0 To match.Count - 1
               ExtractNumber = ExtractNumber & match(i)
            Next i
        End If
End With
 
End Function
댓글 14
4.9 (10개 평가)
루카대디
루카대디 2020.04.13 20:12
wow... 정말 감사합니다~ 실무에 많은 도움이 될것 같네요 ㅎㅎ
약돌한우
약돌한우 2020.04.15 00:37
좋은 자료 감사합니다.
유쾌한사람
유쾌한사람 2020.06.01 22:52
제가 찾았던 기능이네요...너무 고맙습니다^^
cruis****
cruis**** 2020.12.19 22:00
고맙습니다
정민모
정민모 2021.01.28 13:49
죄송하지만, 소수점 포함 함수를 적용하면
'갤럭시 1.2버전'에서 '1.2버'까지 추출이 됩니다.
숫자 다음 첫문자까지 추출이 되는데, 뭘 고쳐야 할지 모르겠습니다.
바쁘실텐데 죄송합니다.
오빠두엑셀
오빠두엑셀 작성자 2021.01.30 11:05
안녕하세요
위 공식을 사용하면 "갤럭시 1.2버전" -> 12 가 추출됩니다. :)
다시 확인해보시겠어요?^^ 감사합니다.
신정섭
신정섭 2022.05.04 16:04
소수점까지 추출 함수를 사용시 붙어있는 문자까지 같이 추출됩니다. ex) 10.5CP 추출시 10.5C로 추출됩니다, 확인 바랍니다.
오빠두엑셀
오빠두엑셀 작성자 2022.05.04 18:58
안녕하세요.
패턴을
"(\d+)(?:\.(\d{1,2}))?"
로 바꿔서 사용해보시겠어요?
감사합니다.
행아
행아 2023.06.02 10:49
공식에 이어서 모듈에서도 성공을 했는데요, 앞서 공식에서도 문의를 남겼습니다만, 최종 추출되는 숫자의 갯수만 뽑을 수 있을까요? 제가 강의 날짜만 컴마를 포함해 입력을 하면(3,10,17,24,31) 코딩함수로 추출 시 310172431 이렇게 나오는데 이걸 5 로 바꿀 수 있는지요...? ㅠㅠ
사막의길
사막의길 2023.08.03 15:51
이렇게 추출한 숫자를 합하고자 하면 어떻게 해야 합니까?
공백도 포함해서 합하고자 합니다. 가능한가요?
오빠두엑셀
오빠두엑셀 작성자 2023.08.03 18:25
안녕하세요.
여러가지 방법이 있겠으나, M365를 사용중이시라면 TEXTSPLIT 함수를 사용해보세요.
만약 그렇지 않다면 홈페이지에서 제공하는 textsplit 함수 추가기능으로 공백 기준 숫자를 나눈 후
SUM 함수로 합계를 구해보시길 바랍니다.
phe****
phe**** 2024.04.15 15:47
엑셀에 해당 함수가 없을수도 있나요? ㅠㅠ
오빠두엑셀
오빠두엑셀 작성자 2024.04.17 08:51
안녕하세요. 오빠두엑셀입니다.
이 함수는 VBA 사용자 함수입니다.
따라서 매크로 편집기에 코드를 등록한 후 사용할 수 있습니다.
감사합니다.
강민준🤗
강민준🤗 2024.08.11 12:11
좋은 자료 감사합니다.🙇‍♂️