- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 엑셀에서 숫자를 문자형으로 안전하게 변환하는 모든 실무 시나리오를 체계적으로 정리하여, 앞자리 0 보존, 과학적 표기 억제, 날짜 일련번호 고정, 금액 형식 지정 등 현장에서 즉시 재현 가능한 방법을 제공하는 것이다.
1. 개념 정리: ‘숫자’와 ‘텍스트’의 차이
엑셀에서 셀 값은 크게 숫자형과 텍스트형으로 구분되며 계산 가능 여부, 정렬 방식, 표시 서식 적용 방식이 달라진다. 숫자형은 산술 연산과 집계 함수에서 사용되며 표시 형식에 따라 화면에 보이는 값이 바뀌나 내부 값은 변하지 않는다. 텍스트형은 표시된 문자를 그대로 보존하며 연산 대상이 아니고, 정렬 시 사전순으로 배치된다. 본문에서는 숫자형 데이터를 의도적으로 텍스트형으로 변환하는 10가지 표준 절차를 설명하며, 경우에 따라 서식 보존 및 재변환 전략을 함께 제시한다.
2. 가장 빠른 변환: 작은따옴표(‘) 접두
단건 입력 시 가장 신속한 방법이다. 셀에 '12345처럼 작은따옴표 한 글자를 맨 앞에 붙이면 엑셀이 텍스트로 인식한다. 셀에는 12345로 보이나 값은 텍스트로 저장된다. 이 방법은 바코드, 사번, 우편번호처럼 앞자리 0 또는 고정 길이를 보존해야 할 때 유용하다. 단, 다량 데이터 일괄 적용에는 비효율적이다.
3. 수식 결합: "&" 연산자 또는 빈문자열 더하기
범용 일괄 변환 방법이다. 숫자 B열을 텍스트로 바꾸려면 다음과 같이 쓴다.
=B2&"" =TEXT(B2,"0") &""는 데이터의 내부 숫자 값을 문자열로 강제 캐스팅한다. 단순히 문자형 변환만 필요할 때 안정적이다. 표시 형식이 필요한 경우 TEXT 함수를 사용한다.
4. 표준 함수: TEXT로 형식 제어와 함께 텍스트화
TEXT(값, 형식코드)는 숫자를 지정한 표시 형식으로 변환하며 결과는 텍스트이다.
=TEXT(B2,"0") ' 소수점 없는 일반 숫자 =TEXT(B2,"0.00") ' 소수 둘째 자리까지 고정 =TEXT(B2,"000000") ' 앞자리 0을 포함해 6자리로 패딩 =TEXT(B2,"#,##0") ' 천단위 구분기호 =TEXT(B2,"yyyy-mm-dd") ' 날짜 일련번호 → 텍스트 날짜 =TEXT(B2,"hh:mm:ss") ' 시간 일련번호 → 텍스트 시간 =TEXT(B2,"0%") ' 백분율 표시로 텍스트화 =TEXT(B2,"[$-409]mmm d, yyyy") ' 로케일 코드 활용 날짜 영문 표기 TEXT는 표시 결과를 문자열로 고정하므로 이후 합계나 평균을 계산하려면 VALUE 등으로 다시 숫자로 변환해야 한다.5. 셀 서식 ‘텍스트’로 변경 후 재입력 또는 강제 재평가
대량 입력 전이라면 범위를 선택하고 셀 서식을 ‘텍스트’로 지정한 뒤 값을 입력하면 곧바로 텍스트로 저장된다. 이미 숫자가 입력된 상태라면 서식을 텍스트로 바꾼 뒤 F2 → Enter로 셀을 재평가하거나, 빈 문자열 더하기 수식으로 한 번에 변환한다.
='원본범위 ' 복제 후 값 붙여넣기 =TEXT(원본셀,"0") 이 방법은 원천 데이터가 CSV 등으로 주기적으로 유입되는 경우 사전 서식으로 데이터 훼손을 예방하는 데 효과적이다.
6. 사용자 지정 서식 vs 텍스트화의 차이
사용자 지정 서식은 숫자형을 그대로 두고 화면 표시만 바꾼다. 반면 텍스트화는 데이터 타입 자체를 문자열로 바꾼다. 예를 들어 000000 사용자 지정 서식은 123을 000123으로 보이게 하나 내부 값은 123이다. 외부 시스템으로 내보낼 때 000123을 그대로 가져가려면 TEXT(B2,"000000")로 텍스트를 생성해 내보내야 한다.
7. 과학적 표기 억제와 길이 보존
긴 숫자(예: 18자리 이상)는 자동으로 지수형(과학적) 표기로 표시되거나 말단 자릿수가 반올림될 수 있다. 수입 단계에서 텍스트 서식을 적용하거나, 즉시 TEXT 혹은 &""를 사용해 문자열로 고정한다.
=TEXT(B2,"0") =B2&"" 8. 날짜·시간 일련번호를 텍스트로 고정
엑셀의 날짜·시간은 일련번호이며 서식에 따라 다양하게 보인다. 외부 보고서나 시스템 API로 일관된 문자열을 전달하려면 다음과 같이 고정한다.
=TEXT(A2,"yyyy-mm-dd") =TEXT(A2,"yyyy-mm-dd hh:mm:ss") =TEXT(A2,"[$-412]yyyy"&"년 "&TEXT(A2,"[$-412]m")&"월 "&TEXT(A2,"[$-412]d")&"일") 이 방식은 피벗테이블 그룹핑을 깨지 않으면서 표시용 열만 별도로 만드는 데 유리하다.
9. 고급: TEXT 함수 형식코드 설계 패턴
| 목표 | 형식코드 예 | 설명 |
|---|---|---|
| 고정 자릿수 | 000000 | 부족한 자릿수는 0으로 채운다. |
| 천단위 구분 | #,#00 | 천 단위 콤마 표시를 강제한다. |
| 부호 제어 | +0;-0;0 | 양수·음수·0 각각의 표시를 정의한다. |
| 단위 포함 | 0" kg" | 숫자 뒤에 텍스트 단위를 덧붙인다. |
| 백분율 | 0.00% | 0.123 → 12.30%로 텍스트화한다. |
| 통화 | "₩"#,##0 | 원화 기호와 천단위를 결합한다. |
10. Power Query로 숫자→텍스트 변환
데이터 가져오기 단계에서 형식 고정이 필요하면 Power Query를 사용한다. 열을 선택하고 데이터 형식을 ‘텍스트’로 지정하거나, 로케일을 지정해 문화권별 서식을 정확히 해석한다.
// Power Query M 코드 예시: 숫자 열을 텍스트로 변환 let Source = Excel.CurrentWorkbook(){[Name="tbl"]}[Content], ChangedType = Table.TransformColumnTypes(Source,{{"번호", type text}}) in ChangedType 11. VBA로 대량 변환 자동화
반복 업무가 많다면 간단한 VBA 매크로로 범위를 일괄 텍스트화할 수 있다.
Sub RangeToText() Dim rng As Range Set rng = Selection Dim c As Range For Each c In rng If Not IsEmpty(c.Value) Then c.NumberFormat = "@" ' 텍스트 서식 c.Value = CStr(c.Value) ' 문자열 변환 End If Next c End Sub CSV로 내보내기 전 코드로 한 번 변환하면 앞자리 0 손실을 안정적으로 예방한다.
12. 숫자→한글 금액 표기로 텍스트화(사용자 정의 함수)
계약서·세금계산서 등에서 금액을 한글로 표기할 때 사용자 정의 함수를 사용할 수 있다.
Function NumToKorean(ByVal n As Variant) As String Dim u As Variant, t As Variant, w As Variant u = Array("", "일", "이", "삼", "사", "오", "육", "칠", "팔", "구") t = Array("", "십", "백", "천") w = Array("", "만", "억", "조", "경", "해") Dim s As String, i As Long, grp As Long, digit As Integer, pos As Integer, part As String s = CStr(Fix(Abs(CDec(n)))) Dim r As String, lenS As Long lenS = Len(s) For i = 0 To lenS - 1 digit = CInt(Mid$(s, lenS - i, 1)) pos = i Mod 4 grp = i \ 4 If digit > 0 Then part = u(digit) & t(pos) r = part & r End If If pos = 3 And Len(r) > 0 Then If Left$(r, Len(w(grp))) <> w(grp) Then r = w(grp) & r End If Next i r = Replace(r, "일십", "십") r = Replace(r, "일백", "백") r = Replace(r, "일천", "천") If n < 0 Then r = "마이너스 " & r NumToKorean = IIf(r = "", "영", r) & "원" End Function 시트에서 =NumToKorean(B2)처럼 호출하면 금액을 한글 표기로 텍스트화한다. 소수 처리 등 추가 규칙은 업무 기준에 맞게 확장한다.
13. 텍스트로 변환된 값의 재활용: 다시 숫자로
향후 계산이 필요하면 VALUE, DATEVALUE, TIMEVALUE로 되돌린다.
=VALUE(C2) ' 숫자 문자열 → 숫자 =DATEVALUE(C2) ' "2025-10-25" → 날짜 일련번호 =TIMEVALUE(C2) ' "14:30:00" → 시간 일련번호 SUBSTITUTE로 기호를 제거한 후 VALUE를 적용한다.14. 대량 변환 시나리오별 권장 절차
| 시나리오 | 권장 방법 | 비고 |
|---|---|---|
| 사번·바코드·우편번호 | TEXT(값,"000000") | 앞자리 0 보존 필수이다. |
| 전화번호 | TEXT와 하이픈 결합 | =TEXT(A2,"000-0000-0000") 형태 권장이다. |
| 긴 계정번호(16~20자리) | 데이터 가져오기에서 텍스트, 또는 B열에 =A2&"" | 지수 표기와 반올림을 사전에 차단한다. |
| 날짜 고정 | TEXT(값,"yyyy-mm-dd") | 보고서 일관성 확보에 적합하다. |
| 퍼센트·통화 보고용 문자열 | TEXT(값,"0.0%"), TEXT(값,"₩#,##0") | 표시와 내보내기 문자열을 일치시킨다. |
| CSV 내보내기 | 보조열 TEXT 생성 → 값 붙여넣기 | 내보내기 전 타입을 문자열로 고정한다. |
15. 값 붙여넣기로 수식 제거
보고서 제출 또는 시스템 업로드 전 수식을 값으로 고정한다. 변환 열을 선택하고 복사한 다음, 마우스 오른쪽 버튼으로 ‘값 붙여넣기’를 실행하면 텍스트 문자열만 남는다. 이는 링크 깨짐과 외부 참조 문제를 예방한다.
16. ‘오류 표시’와 데이터 유효성
숫자를 텍스트로 저장하면 셀 좌측에 녹색 표시가 나타나 ‘숫자가 텍스트로 저장됨’ 경고가 뜰 수 있다. 보고서 표준에 따라 유지하거나, 범위를 선택해 ‘오류 무시’를 적용한다. 데이터 유효성 규칙을 통해 텍스트만 허용하도록 제한하면 입력 단계에서 일관성을 확보한다.
17. 텍스트 정규화: 공백·제어문자 제거
외부 시스템 호환성을 위해 공백과 비인쇄 문자를 제거한다.
=TRIM(CLEAN(A2)) ' 기본 정리 =SUBSTITUTE(A2," ","") ' 모든 공백 제거 =TEXT( --SUBSTITUTE(A2,",",""), "0") ' 쉼표 제거 후 텍스트화 --는 숫자 변환 연산자이며 국제 설정에 따라 천단위 구분자 처리에 주의해야 한다.18. 수식 없는 일괄 변환: 텍스트 나누기 활용
범위를 선택하고 ‘데이터 → 텍스트 나누기’를 실행한 뒤 구분 기호를 임의로 설정하고 마지막 단계에서 데이터 형식을 ‘텍스트’로 지정하면 원본 숫자가 텍스트로 일괄 변환된다. 외부 수식 없이 GUI만으로 처리한다.
19. 재현 가능한 체크리스트
- 원천 데이터의 최대 자릿수와 손실 위험을 확인한다.
- 수입 단계에서 텍스트 열 지정을 최우선으로 고려한다.
- 표시용과 계산용 열을 분리한다.
- TEXT 형식코드를 문서화하여 팀 표준으로 관리한다.
- 내보내기 전 값 붙여넣기로 수식을 제거한다.
- 에러 표시 정책과 데이터 유효성 규칙을 정의한다.
20. 예제 시트 구조와 공식 패턴
| 열 | 내용 | 예시 수식 |
|---|---|---|
| A | 원본 숫자 | 입력값 |
| B | 텍스트(단순) | =A2&"" |
| C | 텍스트(패딩6) | =TEXT(A2,"000000") |
| D | 텍스트(통화표시) | =TEXT(A2,"₩#,##0") |
| E | 날짜 텍스트 | =TEXT(A2,"yyyy-mm-dd") |
| F | 퍼센트 텍스트 | =TEXT(A2,"0.0%") |
FAQ
앞자리 0이 계속 사라진다. 가장 안전한 방법은 무엇인가?
입력 전에 셀 서식을 ‘텍스트’로 지정하는 것이 가장 안전하다. 이미 입력된 값이라면 =TEXT(A2,"000000")으로 보조열을 만들고 값 붙여넣기로 고정한다.
긴 숫자가 1.23E+15처럼 보인다. 어떻게 고정하나?
데이터를 가져올 때 열 형식을 텍스트로 지정하거나, 즉시 =A2&"" 또는 =TEXT(A2,"0")을 적용해 문자열로 고정한다. 이미 반올림된 말단 자릿수는 복구되지 않는다.
텍스트로 바꾼 값을 다시 계산하려면?
VALUE, DATEVALUE, TIMEVALUE로 되돌린다. 천단위 구분기호 등은 SUBSTITUTE로 제거한 뒤 처리한다.
보고서에 2025-10-25 같은 날짜 문자열이 필요하다. 표시와 동일하게 고정하려면?
=TEXT(A2,"yyyy-mm-dd")로 별도의 표시용 열을 만들고, 제출 전 ‘값 붙여넣기’로 수식을 제거한다.
CSV로 내보낼 때 앞자리 0이 사라진다.
내보내기 전에 텍스트 열을 따로 만들어 TEXT(값,"000000")로 고정하고, 그 열만 CSV로 내보낸다.
수식 없이 GUI만으로 일괄 텍스트 변환 가능하나?
가능하다. ‘텍스트 나누기’ 마법사 마지막 단계에서 데이터 형식을 ‘텍스트’로 지정하면 된다.
Power Query에서 텍스트로 변환하는 이유는?
수입 단계에서 타입을 확정하면 지수 표기나 자릿수 손실을 사전에 차단할 수 있다. 로드 후에도 텍스트가 유지되어 재작업이 줄어든다.
작은따옴표를 사용하면 안전한가?
단건 입력에는 편리하나 값에 작은따옴표가 포함되므로 시스템 연계 시 부작용이 생길 수 있다. 대량 처리에는 TEXT 또는 열 형식 지정이 권장된다.