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

엑셀 셀에서 숫자만 추출하는 방법 :: 엑셀 공식

숫자와 문자가 섞인 값에서 숫자만 추출하는 엑셀 공식과 동작원리를 알아봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2023. 03. 14. 16:04
URL 복사
메모 남기기 : (32)

엑셀 숫자만 추출하기 공식

엑셀 숫자만 추출하기 목차 바로가기
함수 공식
=SUMPRODUCT(MID(0&셀,LARGE(ISNUMBER(--MID(셀,ROW($1:$50),1))*ROW($1:$50),ROW($1:$50))+1,1)*10^(ROW($1:$50)-1))
'본 공식은 배열수식이므로 M365 이전버전은 Ctrl + Shift + Enter로 입력합니다.
소수점(.)을 포함하여 숫자를 추출하는 공식 업데이트!
(엑셀 2019 이후 버전)
=TEXTJOIN("",,IF(--ISNUMBER(MID(셀,ROW(INDIRECT("A1:A"&LEN(셀))),1)*1)+(--(MID(셀,ROW(INDIRECT("A1:A"&LEN(셀))),1)=".")),MID(셀,ROW(INDIRECT("A1:A"&LEN(셀))),1),""))
'위 공식은 엑셀 2019 이후 버전에서만 사용가능합니다.

매크로를 사용해서 숫자 추출을 자동화하는 방법은 아래 게시글에 정리해드렸습니다.

인수 설명
엑셀 숫자 추출하기 공식 설명
엑셀 셀에서 숫자만 추출하기 공식
인수 설명
숫자와 문자가 함께 입력된 셀 주소입니다.
$1:$50 $1:$50로 범위를 입력하면, 셀에 입력된 문자를 최대 50자까지 받아와 숫자를 추출합니다. 만약 더 많은 글자에서 숫자를 추출해야 할 경우, 범위를 $1:$100 등으로 수정합니다.
단 범위를 넓게 지정할수록, 함수의 처리속도가 느려지므로 주의해서 사용합니다.

예제파일 다운로드

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

  • [엑셀공식] 엑셀 숫자만 추출하기 공식
    예제파일

호환성
운영체제 호환성
Windows 버전 모든 엑셀 버전에서 사용 가능합니다.
Mac 버전 모든 엑셀 버전에서 사용 가능합니다.
사용된 기초 함수

엑셀 숫자만 추출하기 공식 알아보기

공식 설명

본 공식은 셀 안에 입력된 값에서 숫자만 추출하는 공식입니다. 셀 안에 입력된 글자수나 사용된 언어(영어, 한국어, 중국어 등)에 상관없이 사용할 수 있습니다.

M365 버전에서는 일반 수식과 동일하게 Enter키로 입력해도 동작하지만, M365 이전 버전에서는 반드시 Ctrl + Shift + Enter로 수식을 입력해야 합니다. 그렇지 않을 경우 #VALUE! 오류를 반환합니다.

공식의 동작원리
  1. 셀 안에 입력된 값 앞에 강제로 0 추가하기
    '셀 : abc12e34f
    = SUMPRODUCT(MID(0&셀,LARGE(ISNUMBER(--MID(셀,ROW($1:$50),1))*ROW($1:$50),ROW($1:$50))+1,1)*10^(ROW($1:$50)-1))
    '셀 안에 입력된 텍스트 앞에 0을 추가합니다.
    = SUMPRODUCT(MID("0abc12e34f",LARGE(ISNUMBER(--MID(셀,ROW($1:$50),1))*ROW($1:$50),ROW($1:$50))+1,1)*10^(ROW($1:$50)-1))
  2. LARGE 함수로 문자 추출지점 구하기
    = SUMPRODUCT(MID("0abc12e34f",LARGE(ISNUMBER(--MID(셀,ROW($1:$50),1))*ROW($1:$50),ROW($1:$50))+1,1)*10^(ROW($1:$50)-1))
    ' 공식에서 LARGE 함수 부분만 분리해서 단계별로 알아보겠습니다.
    = LARGE(ISNUMBER(--MID("abc12e34f",ROW($1:$50),1) )*ROW($1:$50), ROW($1:$50)) +1
    ' ROW($1:$50)은 배열함수에서 {1,2,3,4,5...., 50}을 반환합니다.
    = LARGE(ISNUMBER(--MID("abc12e34f",{1,2,3,4,...,50},1) )*ROW($1:$50), ROW($1:$50)) +1
    ' MID 함수로 "0abc12e34f" 에서 첫번째 문자부터 두번째, 세번째... 문자를 하나씩 분리합니다.
    ' -- 기호는 문자로 반환된 값을 숫자로 강제 변환합니다.
    = LARGE ( ISNUMBER( {a,b,c,1,2,e,3,4,f} ) * ROW($1:$50) , ROW($1:$50)) +1
    ' ISNUMBER를 통해 반환된 값의 숫자 여부를 판단합니다. 숫자일경우 1, 아닐경우 0을 반환합니다.
    = LARGE ( {0,0,0,1,1,0,1,1,0} ) * ROW($1:$50) , ROW($1:$50)) +1
    = LARGE ( {0,0,0,4,5,0,7,8,0} , ROW($1:$50) ) + 1
    = {8,7,5,4} + 1
    = {9,8,6,5}
    ' 0을 포함한 텍스트(0abc12e34f)에서, 각 9번째,8번째,6번째,5번째 값이 숫자인 것을 확인할 수 있습니다.
  3. 맨 뒤에 위치한 숫자값 부터 10^제곱근을 곱하여 나열한 뒤, SUMPRODUCT로 합산하기
    ' MID 함수로 각 n번째 문자를 분리합니다.
    = SUMPRODUCT( MID( "0abc12e34f", {9,8,6,5}, 1) * 10^(ROW($1:$50)-1) )
    = SUMPRODUCT( {4,3,2,1} * 10^(ROW($1:$50)-1) )
    = SUMPRODUCT ( {4,3,2,1} * 10^( {0,1,2,3} ) )
    ' 10의 0제곱은 1, 10의 1제곱은 10, 10의 2제곱은 100... 으로 계산됩니다.
    = SUMPRODUCT ( {4*10^0, 3*10^1, 2*10^2, 1*10^3} )
    = SUMPRODUCT ( {4, 30, 200, 1000} )
    = 1234
    '결과값으로 1234를 반환합니다. (=셀에서 숫자만 추출)
댓글 32
4.9 (15개 평가)
only****
only**** 2020.05.24 15:07
아 정말 어렵네요..ㅠㅠ 나중에 동영상 강의 올려 주시면 그 때 다시 한번 봐야겠습니다. 되게 신기해서 빨리 배우고 싶은데.. 역시 어렵네요..그래도 친절한 설명 너무나 감사합니다. 다시 한번 감사 드리고, 동영상 강의가 빨리 올라오길 기대하고 있겠습니다. ㅎㅎㅎ
skyoxen
skyoxen 2020.07.14 18:46
강의보면서 많이 참고하고 활용하고 있습니다 ^^ 위 예문중에 숫자추출 갯수가 한계가 있나요?15자리 이후 16자리수 부터는 0000으로만 표시되는데..(예제포함) 어떻게 해결해야 될까요~
오빠두엑셀
오빠두엑셀 작성자 2020.07.14 19:57
안녕하세요?^^
엑셀은 시스템적으로 최초 15자리 숫자만 값을 표현하고 그 이후 자리는 0으로 변경합니다.
따라서 숫자로 표현하는 것은 근본적으로 해결이 불가능하구요..
대안책으로 앞에 홑따옴표(')를 추가해서 텍스트 형태로 변경하는 방법이 있습니다.
skyoxen
skyoxen 2020.07.14 20:17
감사합니다~ 어렵네요 ^^ 일정한 규칙의 3자리 번호를 추출하고있는데 수식에다 홑따옴표를 붙여나 하나요? 이리저리 해봐도 잘안되네요
오빠두엑셀
오빠두엑셀 작성자 2020.07.15 00:01
안녕하세요?
수식이 아닌 기존 값 앞에 홑따옴표를 추가하시면 됩니다.
예를들어, 123123123123123123 을 입력하시면, 123123123123123000 으로 표시가 됩니다.
앞에 홑따옴표를 추가하시면, 123123123123123123 이 텍스트형태로 표시됩니다.
그 상태에서 MID 함수나 LEFT 함수를 사용해서 3자리 번호를 추출하시면 될 듯 합니다.^^
알파칸
알파칸 2020.08.11 18:25
문자만 있는 경우네는 0이 나옵니다.
오빠두엑셀
오빠두엑셀 작성자 2020.08.12 11:07
안녕하세요? :)
문자만 있을 경우 0이 출력되는 것이 정상입니다.
0 이 아닌 다른 값을 출력하시려면 IF함수를 같이 응용해보세요.
=IF(공식=0,"",공식)
감사합니다
감사합니다 2020.11.06 16:37
감사합니다. 혹시 맨앞에 0이 있는경우에 같이 출력되도록 하는 방법도 있을까요?
오빠두엑셀
오빠두엑셀 작성자 2020.11.06 19:00
TEXT 함수를 같이 응용해보세요.
=TEXT(공식..,"000000")
천안에이스퀵
천안에이스퀵 2022.06.15 15:22
TEXT 를 어떻게 응용하는지 알려주심 감사하겠습니다.
BC
BC 2020.11.12 11:40
안녕하세요! :-)
오빠두 엑셀 페이지가 회사 업무하는데 정말 도움이 많이 되고 있어서 어떻게 감사를 드려야 할지 모르겠어요 ㅎㅎ
제가 사용하는 엑셀 자료는 매일매일 자료를 업데이트를 해야 해서 ROW 함수의 범위도 계속계속 늘어나야 하는데, 이렇게되면 엑셀 파일 자체가 버벅되는 현상이 생기는 거죠~?
오빠두엑셀
오빠두엑셀 작성자 2020.11.12 20:03
안녕하세요.
ROW 함수 범위를 늘리면 처리속도가 느려지는 건 맞지만, 제 예상에 200개 글자 이상 문자열에서 숫자를 추출하는 경우는 없을 것이라고 생각됩니다.^^
ROW 함수 범위가 극단적으로 늘어나지 않는 한, 처리속도가 아주 느려지거나 하진 않을 겁니다. :)
감사합니다.
굳아01239
굳아01239 2021.02.06 15:44
매우 유용하네요 이해는 못했지만..ㅋ 잘 활용하고 있습니다.
GOODLIFE
GOODLIFE 2021.05.12 15:22
와 개꿀이네요 감사합니다
ㄴㅇㄹ
ㄴㅇㄹ 2021.06.10 10:26
와... 진짜 이런 분을 보고 엑셀 천재라고 하나봐요
kyblovely
kyblovely 2022.06.27 23:00
정말 엑셀 초보입니다. 위의 공식을 복사해서 사용하려는데 값이 자꾸 0으로만 나와서요ㅠㅠ
함수앞과 뒤에 있는 {}표시는 무엇일까요ㅠㅠ 저 저 함수 너무 쓰고 싶은데 왜 전 안될까요ㅠㅠ 유트브 영상에도 없고ㅠㅠ
오빠두엑셀
오빠두엑셀 작성자 2022.06.29 16:01
안녕하세요.
본 수식은 배열수식이므로 Ctrl + Shift + Enter로 입력하시면 됩니다.^^
실 사용예제는 파일을 확인해주시고, 배열수식에 대한 설명은 아래 강의를 한번 참고해보세요.
https://www.oppadu.com/%ec%a7%84%ec%a7%9c%ec%93%b0%eb%8a%94-%ec%8b%a4%eb%ac%b4%ec%97%91%ec%85%80-7-4-1/
독고진
독고진 2022.09.30 17:42
  1. 굳이 "셀 안에 입력된 텍스트 앞에 0을 추가"하는 이유는 무엇인지요?
  2. "--" 이것이 강제로 숫자로 변환시키는 것이라 하셨는데, 정식 명칭이 무엇인가요? 처음 보는 연산자입니다. 문자 "a"를 강제로 숫자로 변환하면 무슨 타입이 되나요? "a"그대로 아닌가요?
오빠두엑셀
오빠두엑셀 작성자 2022.09.30 23:24
1. 숫자가 없을 경우 오류를 방지합니다.
2. 아래 링크를 한번 참고해보시길 바랍니다.^^
https://www.oppadu.com/논리값-숫자-변경-기호/
독고진
독고진 2022.10.01 02:02
감사합니다~