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

텍스트에서 숫자만 추출

지원 버전 자세히 보기
엑셀 2013 이전엑셀 2016엑셀 2019엑셀 2021엑셀 2024M365웹 엑셀

문자와 섞인 값에서 숫자만 골라냅니다.

텍스트에서 숫자만 추출 예제 미리보기
예제 미리보기 크게 보기

인수 설명

01모든 버전 숫자 추출 공식

=SUMPRODUCT ( MID ( 0&;, LARGE ( ISNUMBER ( --MID ( , ROW ( $1:$50 ), 1 ) ) * ROW ( $1:$50 ), ROW ( $1:$50 ) ) + 1, 1 ) * 10^( ROW ( $1:$50 ) - 1 ) )
인수 설명 자세히 보기(인수를 클릭하면 해당 영역만 강조됩니다. 여러 개를 함께 켜고 끌 수 있습니다.)
인수구분설명
필수숫자와 문자가 함께 입력된 셀입니다. 마침표와 부호는 제외되고 앞자리 0은 유지되지 않으며, $1:$50 범위를 사용하므로 앞 50자까지만 처리합니다.
B2=SUMPRODUCT(MID(0&A2,LARGE(ISNUMBER(--MID(A2,ROW($1:$50),1))*ROW($1:$50),ROW($1:$50))+1,1)*10^(ROW($1:$50)-1))
A
B
C
D
E
1
원본 텍스트
숫자만 추출
소수점 포함
최신 공식
2
A12.50kg
1250
12.50
12.50
3
주문9A08
908
908
908
4
온도18.5도
185
18.5
18.5
5
코드4-72
472
472
472
6
할인7.25%
725
7.25
7.25
7
3층201호
3201
3201
3201
8
폭10.0cm
100
10.0
10.0
9
A2 셀의 숫자 문자 1, 2, 5, 0을 순서대로 다시 조립하므로 B2 셀은 숫자값 1250을 반환합니다. Excel 2019 이하 버전에서는 Ctrl+Shift+Enter로 수식을 확정합니다.

동작 원리

MID 함수가 문자를 하나씩 나누고 LARGE 함수와 SUMPRODUCT 함수가 숫자 문자만 원래 순서의 숫자값으로 조립합니다.

모든 버전 숫자 추출 공식의 예제 시트에서 B2 셀이 1250을 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

숫자가 있는 문자 위치를 찾습니다

MID 함수가 A2의 앞 8개 문자를 하나씩 나누고 ISNUMBER 함수가 숫자인 문자에만 행 번호를 남깁니다. 실제 공식의 $1:$50 범위도 같은 방식으로 50번째 문자까지 확인합니다.

=ISNUMBER ( --MID ( A2, ROW ( $1:$8 ), 1 ) ) * ROW ( $1:$8 )
= {0;2;3;0;5;6;0;0} 숫자 1, 2, 5, 0이 있는 위치만 남긴 배열입니다.
2

LARGE 함수가 숫자 위치를 뒤에서부터 정렬합니다

LARGE 함수는 숫자가 있는 위치 6, 5, 3, 2를 큰 값부터 가져옵니다. 앞에 붙인 0을 기준으로 읽도록 각 위치에 1을 더합니다.

=LARGE ( ISNUMBER ( --MID ( A2, ROW ( $1:$50 ), 1 ) ) * ROW ( $1:$50 ), {1;2;3;4} ) + 1
= {7;6;4;3} 0&A2 문자열에서 숫자를 뒤에서부터 읽을 위치입니다.
3

SUMPRODUCT 함수가 자릿값을 합산합니다

MID 함수가 뒤에서부터 0, 5, 2, 1을 가져오고 각각 1, 10, 100, 1000을 곱합니다. SUMPRODUCT 함수가 0+50+200+1000을 더해 1250을 반환합니다.

=SUMPRODUCT ( MID ( 0&A2, LARGE ( ISNUMBER ( --MID ( A2, ROW ( $1:$50 ), 1 ) ) * ROW ( $1:$50 ), ROW ( $1:$50 ) ) + 1, 1 ) * 10^( ROW ( $1:$50 ) - 1 ) )
= 1250 A2에서 마침표를 제외한 숫자값입니다.

02Excel 2019 이후 소수점 포함 공식

=TEXTJOIN ( "", TRUE, IF ( ISNUMBER ( MID ( , ROW ( INDIRECT ( "A1:A"&;LEN ( ) ) ), 1 ) * 1 ) + ( MID ( , ROW ( INDIRECT ( "A1:A"&;LEN ( ) ) ), 1 )="." ), MID ( , ROW ( INDIRECT ( "A1:A"&;LEN ( ) ) ), 1 ), "" ) )
인수 설명 자세히 보기
인수구분설명
필수숫자와 문자가 함께 입력된 셀입니다. 숫자와 마침표만 이어 붙이므로 결과는 텍스트이며 음수 기호와 쉼표는 제외됩니다.
C2=TEXTJOIN("",TRUE,IF(ISNUMBER(MID(A2,ROW(INDIRECT("A1:A"&LEN(A2))),1)*1)+(MID(A2,ROW(INDIRECT("A1:A"&LEN(A2))),1)="."),MID(A2,ROW(INDIRECT("A1:A"&LEN(A2))),1),""))
A
B
C
D
E
1
원본 텍스트
숫자만 추출
소수점 포함
최신 공식
2
A12.50kg
1250
12.50
12.50
3
주문9A08
908
908
908
4
온도18.5도
185
18.5
18.5
5
코드4-72
472
472
472
6
할인7.25%
725
7.25
7.25
7
3층201호
3201
3201
3201
8
폭10.0cm
100
10.0
10.0
9
A2 셀에서 숫자와 마침표만 원래 순서로 이어 붙이므로 C2 셀은 텍스트 '12.50'을 반환합니다. Excel 2019에서는 Ctrl+Shift+Enter로 수식을 확정합니다.

동작 원리

INDIRECT 함수와 ROW 함수가 문자 위치를 만들고 IF 함수와 TEXTJOIN 함수가 숫자와 마침표만 텍스트로 연결합니다.

Excel 2019 이후 소수점 포함 공식의 예제 시트에서 C2 셀이 12.50을 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

INDIRECT 함수가 문자 위치 범위를 만듭니다

LEN 함수는 A2의 문자 수 8을 반환합니다. INDIRECT 함수가 A1:A8 참조를 만들고 ROW 함수가 각 문자의 위치를 배열로 반환합니다.

=ROW ( INDIRECT ( "A1:A"&LEN ( A2 ) ) )
= {1;2;3;4;5;6;7;8} A2의 여덟 문자를 읽을 위치입니다.
2

IF 함수가 숫자와 마침표만 남깁니다

MID 함수가 여덟 문자를 하나씩 나누고 IF 함수가 숫자 또는 마침표인 항목만 남깁니다. 문자 A, k, g가 있던 자리는 빈 문자열로 바뀝니다.

=IF ( ISNUMBER ( MID ( A2, {1;2;3;4;5;6;7;8}, 1 ) * 1 ) + ( MID ( A2, {1;2;3;4;5;6;7;8}, 1 )="." ), MID ( A2, {1;2;3;4;5;6;7;8}, 1 ), "" )
= {"";"1";"2";".";"5";"0";"";""} 숫자와 마침표만 남긴 문자 배열입니다.
3

TEXTJOIN 함수가 남은 문자를 연결합니다

TEXTJOIN 함수는 빈 문자열을 건너뛰고 남은 문자를 구분자 없이 연결합니다. Excel 2019에서는 Ctrl+Shift+Enter로 확정해야 하며, INDIRECT 함수는 입력 길이에 맞는 범위를 다시 계산하는 휘발성 함수입니다.

=TEXTJOIN ( "", TRUE, IF ( ISNUMBER ( MID ( A2, ROW ( INDIRECT ( "A1:A"&LEN ( A2 ) ) ), 1 ) * 1 ) + ( MID ( A2, ROW ( INDIRECT ( "A1:A"&LEN ( A2 ) ) ), 1 )="." ), MID ( A2, ROW ( INDIRECT ( "A1:A"&LEN ( A2 ) ) ), 1 ), "" ) )
= ";12.50"; 숫자와 마침표를 이어 붙인 텍스트입니다.

03Excel 2021·M365 최신 공식

=LET ( txt, , chars, MID ( txt, SEQUENCE ( LEN ( txt ) ), 1 ), TEXTJOIN ( "", TRUE, IF ( ISNUMBER ( --chars ) + ( chars="." ), chars, "" ) ) )
인수 설명 자세히 보기
인수구분설명
필수숫자와 문자가 함께 입력된 셀입니다. 숫자와 마침표만 이어 붙이므로 결과는 텍스트이며 음수 기호와 쉼표는 제외됩니다.
D2=LET(txt,A2,chars,MID(txt,SEQUENCE(LEN(txt)),1),TEXTJOIN("",TRUE,IF(ISNUMBER(--chars)+(chars="."),chars,"")))
A
B
C
D
E
1
원본 텍스트
숫자만 추출
소수점 포함
최신 공식
2
A12.50kg
1250
12.50
12.50
3
주문9A08
908
908
908
4
온도18.5도
185
18.5
18.5
5
코드4-72
472
472
472
6
할인7.25%
725
7.25
7.25
7
3층201호
3201
3201
3201
8
폭10.0cm
100
10.0
10.0
9
SEQUENCE 함수가 A2 셀의 문자 위치를 만들고 TEXTJOIN 함수가 숫자와 마침표만 연결하므로 D2 셀은 텍스트 '12.50'을 반환합니다. 최종 결과는 한 셀에 표시됩니다.

동작 원리

LET 함수가 입력값과 문자 배열에 이름을 붙이고 SEQUENCE 함수와 TEXTJOIN 함수가 숫자와 마침표만 한 셀에 연결합니다.

Excel 2021·M365 최신 공식의 예제 시트에서 D2 셀이 12.50을 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

LET 함수가 입력값에 이름을 붙입니다

LET 함수는 A2 셀의 값을 txt라는 이름으로 저장합니다. 뒤의 계산식은 같은 셀 참조를 반복하지 않고 txt를 사용합니다.

=LET ( txt, A2, txt )
= ";A12.50kg"; txt에 저장된 입력 문자열입니다.
2

SEQUENCE 함수가 문자를 하나씩 분리합니다

LEN 함수가 반환한 길이 8만큼 SEQUENCE 함수가 위치 배열을 만들고, MID 함수가 각 위치의 문자를 하나씩 반환합니다.

=MID ( A2, SEQUENCE ( LEN ( A2 ) ), 1 )
= {"A";"1";"2";".";"5";"0";"k";"g"} A2를 문자 단위로 나눈 배열입니다.
3

TEXTJOIN 함수가 숫자와 마침표를 연결합니다

IF 함수가 숫자와 마침표만 남기고 TEXTJOIN 함수가 빈 문자열을 제외해 연결합니다. 내부에서는 동적 배열을 사용하지만 최종 결과는 한 셀에만 표시됩니다.

=LET ( txt, A2, chars, MID ( txt, SEQUENCE ( LEN ( txt ) ), 1 ), TEXTJOIN ( "", TRUE, IF ( ISNUMBER ( --chars ) + ( chars="." ), chars, "" ) ) )
= ";12.50"; 숫자와 마침표를 이어 붙인 텍스트입니다.

댓글 32

댓글 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
감사합니다~
스크랩 완료