엑셀 텍스트 숫자 변환 :: TextToNumber 함수 사용법 총정리
엑셀 TextToNumber 함수 목차 바로가기
요약
엑셀 TextToNumber 함수는 텍스트를 숫자로 변환하는 사용자지정함수입니다. 최대 1천조 단위까지 텍스트 숫자 변환을 지원합니다.
' 예) [ 일만오천삼백 → 15,300 ] 으로 변환합니다.
변환할 텍스트의 단위가 복잡하지 않은 경우, 아래 엑셀 함수공식을 이용하면 보다 간단하게 해결 할 수도 있습니다.
함수 구문
=TextToNumber ( 텍스트, [단위] )
사용된 인수 및 변수 알아보기
인수 | 설명 |
텍스트 [Variant] |
숫자로 변환할 텍스트 또는 텍스트가 적힌 셀입니다. |
단위 [Variant, 선택인수] |
텍스트를 숫자로 변환 시 제거 할 통화 단위입니다. 기본값은 "원" 입니다. 필요에 따라 "\", "달러", "$" 등을 단위로 지정합니다. |
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [엑셀VBA함수] TextToNumber 함수 - 예제파일예제파일
상세 설명
엑셀 TextToNumber 함수는 숫자와 문자로 작성된 텍스트를 숫자로 변환하는 엑셀 사용자지정함수입니다. 숫자/문자에 상관없이 1천조 이하의 텍스트를 모두 숫자로 변환할 수 있습니다. 단위의 기본값은 "원"이며 필요에 따라 "달러", "\" 등의 기호를 입력하여 텍스트 숫자 변환시 오류를 방지합니다.
함수 사용시 주의사항
- =TextToNumber("1천3백달러") 처럼 텍스트에 사용된 '원'이 아닌 단위를 입력하지 않을 경우 함수는 #NAME? 오류를 반환합니다.
- 숫자로 변환할 수 없는 텍스트(예: 감, 과 등..)이 텍스트에 포함되어 있을 경우에도 함수는 #NAME? 오류를 반환합니다.
- 텍스트로 여러개의 셀, 범위를 입력할 경우 함수는 #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
실전 사용 예제
- 텍스트로 작성 된 값을 숫자로 변환하기
=TextToNumber("일조이천삼백사십오억구십칠만오천사백이십원")
=1234500975420 - 숫자와 텍스트가 섞인 값을 숫자로 변환하기
=TextToNumber("3만 4천 5백 달러", "달러")
=34500
명령문 동작원리 단계별 알아보기
- 변수를 설정합니다.
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)
- 수식을 계산한 뒤, TextToNumber 함수의 결과값으로 반환하면 엑셀 텍스트 숫자 변환 작업이 완료됩니다.
sNum = Evaluate("=" & sNum) TextToNumber = sNum