엑셀 텍스트 숫자 변환 함수 :: TextToNumber 함수 사용법 및 실전예제

텍스트를 숫자로 변환하는 엑셀 사용자지정함수인 TextToNumber 함수의 사용법 및 동작원리를 알아봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2020. 10. 12. 02:18
URL 복사
메모 남기기 : (2)

엑셀 텍스트 숫자 변환 :: TextToNumber 함수 사용법 총정리

엑셀 TextToNumber 함수 목차 바로가기
요약

엑셀 TextToNumber 함수는 텍스트를 숫자로 변환하는 사용자지정함수입니다. 최대 1천조 단위까지 텍스트 숫자 변환을 지원합니다.

' 예) [ 일만오천삼백 → 15,300 ] 으로 변환합니다. 

변환할 텍스트의 단위가 복잡하지 않은 경우, 아래 엑셀 함수공식을 이용하면 보다 간단하게 해결 할 수도 있습니다.

함수 구문
=TextToNumber ( 텍스트, [단위] )
사용된 인수 및 변수 알아보기
인수 설명
텍스트
[Variant]
숫자로 변환할 텍스트 또는 텍스트가 적힌 셀입니다.
단위
[Variant, 선택인수]
텍스트를 숫자로 변환 시 제거 할 통화 단위입니다. 기본값은 "원" 입니다. 필요에 따라 "\", "달러", "$" 등을 단위로 지정합니다.

예제파일 다운로드

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

  • [엑셀VBA함수] TextToNumber 함수 - 예제파일
    예제파일

상세 설명

엑셀 TextToNumber 함수는 숫자와 문자로 작성된 텍스트를 숫자로 변환하는 엑셀 사용자지정함수입니다. 숫자/문자에 상관없이 1천조 이하의 텍스트를 모두 숫자로 변환할 수 있습니다. 단위의 기본값은 "원"이며 필요에 따라 "달러", "\" 등의 기호를 입력하여 텍스트 숫자 변환시 오류를 방지합니다.

함수 사용시 주의사항

  1. =TextToNumber("1천3백달러") 처럼 텍스트에 사용된 '원'이 아닌 단위를 입력하지 않을 경우 함수는 #NAME? 오류를 반환합니다.
  2. 숫자로 변환할 수 없는 텍스트(예: 감, 과 등..)이 텍스트에 포함되어 있을 경우에도 함수는 #NAME? 오류를 반환합니다.
  3. 텍스트로 여러개의 셀, 범위를 입력할 경우 함수는 #VALUE! 오류를 반환합니다.

엑셀 텍스트 숫자 변환, TextToNumber 함수 동작원리

TextToNumber 함수 전체 코드
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ TextToNumber 함수
'▶ 텍스트를 숫자로 변환합니다.
'▶ 인수 설명
'_____________sNum              : 숫자로 변환할 텍스트 또는 텍스트가 입력된 셀입니다.
'_____________unit                 : 텍스트에 포함된 단위입니다.
'###############################################################
Function TextToNumber(sNum, Optional unit = "원")
 
If IsObject(sNum) Then sNum = sNum.Value
If IsObject(unit) Then unit = unit.Value
 
Dim j As Long: Dim y As Long: Dim m As Long
Dim s1 As String: Dim s2 As String: Dim s3 As String
 
sNum = Replace(sNum, "일", "1")
sNum = Replace(sNum, "이", "2")
sNum = Replace(sNum, "삼", "3")
sNum = Replace(sNum, "사", "4")
sNum = Replace(sNum, "오", "5")
sNum = Replace(sNum, "육", "6")
sNum = Replace(sNum, "칠", "7")
sNum = Replace(sNum, "팔", "8")
sNum = Replace(sNum, "구", "9")
 
j = InStr(1, sNum, "조")
y = InStr(1, sNum, "억")
m = InStr(1, sNum, "만")
 
If y = 0 Then y = j
If m = 0 Then m = y
 
s1 = Left(sNum, j)
s2 = Mid(sNum, j + 1, y - j)
s3 = Mid(sNum, y + 1, m - y)
s4 = Mid(sNum, m + 1)
 
s1 = Replace(s1, "천", "*1000000000000000+")
s1 = Replace(s1, "백", "*100000000000000+")
s1 = Replace(s1, "십", "*10000000000000+")
s1 = Replace(s1, "조", "*1000000000000+")
s2 = Replace(s2, "천", "*100000000000+")
s2 = Replace(s2, "백", "*10000000000+")
s2 = Replace(s2, "십", "*1000000000+")
s2 = Replace(s2, "억", "*100000000+")
s3 = Replace(s3, "천", "*10000000+")
s3 = Replace(s3, "백", "*1000000+")
s3 = Replace(s3, "십", "*100000+")
s3 = Replace(s3, "만", "*10000+")
s4 = Replace(s4, "천", "*1000+")
s4 = Replace(s4, "백", "*100+")
s4 = Replace(s4, "십", "*10+")
s4 = Replace(s4, unit, "")
 
sNum = s1 & s2 & s3 & s4
 
sNum = Replace(sNum, " ", "")
sNum = Replace(sNum, "+*", "+1*")
 
If Right(sNum, 1) = "+" Then sNum = Left(sNum, Len(sNum) - 1)
 
sNum = Evaluate("=" & sNum)
 
TextToNumber = sNum
 
End Function
실전 사용 예제
  1. 텍스트로 작성 된 값을 숫자로 변환하기
    =TextToNumber("일조이천삼백사십오억구십칠만오천사백이십원")
    =1234500975420
  2. 숫자와 텍스트가 섞인 값을 숫자로 변환하기
    =TextToNumber("3만 4천 5백 달러", "달러")
    =34500

명령문 동작원리 단계별 알아보기

  1. 변수를 설정합니다.
    If IsObject(sNum) Then sNum = sNum.Value
    If IsObject(unit) Then unit = unit.Value
     
    Dim j As Long: Dim y As Long: Dim m As Long
    Dim s1 As String: Dim s2 As String: Dim s3 As String
  2. 문자로 입력된 숫자(예: 일, 이 삼, 사... )를 숫자로 변환합니다.
    sNum = Replace(sNum, "일", "1")
    sNum = Replace(sNum, "이", "2")
    sNum = Replace(sNum, "삼", "3")
    sNum = Replace(sNum, "사", "4")
    sNum = Replace(sNum, "오", "5")
    sNum = Replace(sNum, "육", "6")
    sNum = Replace(sNum, "칠", "7")
    sNum = Replace(sNum, "팔", "8")
    sNum = Replace(sNum, "구", "9")
  3. 텍스트 내 숫자 단위 (조, 억, 만)의 위치를 찾습니다.
    j = InStr(1, sNum, "조")
    y = InStr(1, sNum, "억")
    m = InStr(1, sNum, "만")
     
    If y = 0 Then y = j
    If m = 0 Then m = y
  4. 각 숫자 단위를 기준으로 텍스트를 분리한 뒤, 숫자 변환 공식을 작성합니다.
    s1 = Left(sNum, j)
    s2 = Mid(sNum, j + 1, y - j)
    s3 = Mid(sNum, y + 1, m - y)
    s4 = Mid(sNum, m + 1)
     
    s1 = Replace(s1, "천", "*1000000000000000+")
    s1 = Replace(s1, "백", "*100000000000000+")
    s1 = Replace(s1, "십", "*10000000000000+")
    s1 = Replace(s1, "조", "*1000000000000+")
    s2 = Replace(s2, "천", "*100000000000+")
    s2 = Replace(s2, "백", "*10000000000+")
    s2 = Replace(s2, "십", "*1000000000+")
    s2 = Replace(s2, "억", "*100000000+")
    s3 = Replace(s3, "천", "*10000000+")
    s3 = Replace(s3, "백", "*1000000+")
    s3 = Replace(s3, "십", "*100000+")
    s3 = Replace(s3, "만", "*10000+")
    s4 = Replace(s4, "천", "*1000+")
    s4 = Replace(s4, "백", "*100+")
    s4 = Replace(s4, "십", "*10+")
    s4 = Replace(s4, unit, "")
  5. 작성된 공식을 하나의 텍스트로 합칩니다.
    sNum = s1 & s2 & s3 & s4
     
    sNum = Replace(sNum, " ", "")
    sNum = Replace(sNum, "+*", "+1*")
     
    If Right(sNum, 1) = "+" Then sNum = Left(sNum, Len(sNum) - 1)
  6. 수식을 계산한 뒤, TextToNumber 함수의 결과값으로 반환하면 엑셀 텍스트 숫자 변환 작업이 완료됩니다.
    sNum = Evaluate("=" & sNum)
     
    TextToNumber = sNum

관련링크 : MS 홈페이지 VBA Replace 명령문 상세설명 바로가기 (영문)

5 2 투표
게시글평점
2 댓글
Inline Feedbacks
모든 댓글 보기
2
0
여러분의 생각을 댓글로 남겨주세요.x