셀에 1234.5를 입력했는데 화면에는 ₩1,235로 표시되는 걸 본 적이 있을 것이다. 이때 이 셀을 다른 수식에서 참조하면 어떤 값이 쓰일까. ₩1,235일까, 아니면 원래의 1234.5일까? 정답은 1234.5다. 이 질문에 답할 수 있다면 TEXT 함수와 서식 코드의 원리를 이미 절반은 이해한 것이다.
값과 표시 방식은 서로 다른 층위에 있다
엑셀은 셀 안에 두 가지 정보를 따로 들고 있다. 하나는 '실제 값'(1234.5라는 숫자)이고, 다른 하나는 '표시 형식'(어떻게 보여줄지에 대한 규칙)이다. 셀 서식에서 통화, 백분율, 날짜 같은 형식을 지정해도 실제 값 자체는 전혀 바뀌지 않는다. 단지 화면에 그려지는 방식만 달라질 뿐이다. 이 원리를 이해하면 "분명 100%라고 표시되는데 계산에서는 1로 쓰인다"거나 "날짜가 화면엔 2026-01-15인데 실제로는 46037이라는 숫자다" 같은 현상이 전혀 이상하지 않게 된다.
셀 서식과 TEXT 함수의 차이
셀 서식(Ctrl+1)을 이용한 표시 형식 변경은 '값은 그대로 둔 채 화면 표시만 바꾸는' 방식이다. 반면 TEXT 함수는 이 서식 규칙을 적용한 결과를 아예 새로운 텍스트 문자열로 만들어낸다는 점이 다르다.
=TEXT(1234.5, "#,##0")이 수식의 결과는 "1,235"라는 텍스트다. 셀 서식과 달리 이 결과는 더 이상 숫자 1234.5가 아니라 문자로 취급되므로, 이 값을 다시 계산에 사용하면 오류가 나거나 원치 않는 결과를 얻을 수 있다. 대신 다른 텍스트와 자연스럽게 이어 붙일 수 있다는 장점이 있다.
="총 매출: "&TEXT(1234.5,"#,##0")&"원"이런 식으로 문장 안에 숫자를 원하는 형태로 끼워 넣고 싶을 때 TEXT 함수가 진가를 발휘한다. 셀 서식만으로는 이렇게 텍스트와 섞어서 표현할 수 없다.
서식 코드는 하나의 작은 문법이다
TEXT 함수의 두 번째 인수에 들어가는 "#,##0" 같은 기호들은 각자 규칙을 가진 일종의 미니 문법이다.
| 서식 코드 | 의미 | 예시(1234.5 입력 시) |
|---|---|---|
| 0 | 해당 자리에 숫자가 없으면 0을 채움 | 01234.5 → "0000.0" 적용 시 |
| # | 해당 자리에 숫자가 없으면 표시하지 않음 | 1234.5 → "#.#" 적용 시 |
| , | 천 단위 구분 기호 | 1,234.5 |
| % | 100을 곱하고 % 기호 추가 | 0.5 → "50%" |
| yyyy-mm-dd | 날짜를 연-월-일 형식으로 표시 | 2026-01-15 |
0과 #의 차이가 특히 헷갈리기 쉬운데, "0"은 자릿수가 부족해도 강제로 채워 넣고 "#"은 필요 없는 자리는 그냥 비워둔다는 차이로 기억하면 된다.
자주 하는 실수
TEXT로 변환한 값을 숫자 계산에 다시 사용하려다 오류를 만나는 경우가 가장 흔하다. TEXT의 결과물은 어디까지나 텍스트이므로, 다시 숫자로 되돌리려면 VALUE 함수를 함께 써야 한다. 또한 날짜에 TEXT를 적용할 때 서식 코드의 대소문자를 착각하는 경우도 많다. 월은 소문자 "m", 분은 상황에 따라 대문자·소문자가 구분되어 쓰이므로 헷갈리지 않도록 주의가 필요하다.
Q. 셀 서식으로 충분한데 왜 굳이 TEXT 함수를 쓰나요?
다른 텍스트와 하나의 문장으로 합치고 싶을 때, 혹은 조건부 서식이나 다른 함수의 결과값 안에서 형식을 지정하고 싶을 때는 셀 서식만으로는 처리할 수 없어 TEXT 함수가 필요하다.
Q. TEXT로 바꾼 값을 다시 숫자로 되돌릴 수 있나요?
가능하다. =VALUE(TEXT(1234.5,"#,##0"))처럼 VALUE로 감싸면 다시 숫자로 변환된다. 다만 서식 과정에서 소수점 이하가 반올림되었다면 원래 값과 달라질 수 있다는 점은 유의해야 한다.
마무리
TEXT 함수의 핵심은 "화면에 보이는 모습"과 "실제로 저장된 값"이 애초에 서로 다른 층위에 있다는 사실에 있다. 이 개념은 다음 글에서 다룰 문자열 함수들, 즉 텍스트를 문자 단위의 배열로 바라보는 LEFT·RIGHT·MID의 원리를 이해하는 데도 이어지는 기초가 된다.