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

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

작성자 :
오빠두엑셀
최종 수정일 : 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를 반환합니다. (=셀에서 숫자만 추출)
4.9 15 투표
게시글평점
32 댓글
Inline Feedbacks
모든 댓글 보기
32
0
여러분의 생각을 댓글로 남겨주세요.x