Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기이 글의 목적은 엑셀에서 사용자 지정 숫자 형식을 설정했지만 셀에 적용되지 않는 다양한 원인을 체계적으로 진단하고, 실무에서 바로 사용할 수 있는 복구 절차와 체크리스트, 수식·VBA·파워쿼리 대안을 제공하는 것이다.
다음과 같은 경우 사용자 지정 형식이 적용되지 않은 것으로 판단한다.
원인은 크게 데이터 유형 문제, 숨은 문자 문제, 로케일·구분기호 문제, 서식 우선순위 충돌, 대상 개체 특수 규칙, 사용자 지정 패턴 오류로 나뉜다. 다음 의사결정 흐름으로 처리한다.
아래 테스트로 즉시 유형을 판단한다.
=ISNUMBER(A2) 'TRUE면 숫자, FALSE면 텍스트이다 =ISTEXT(A2) 'TRUE면 텍스트이다 =CODE(MID(A2,1,1)) '첫 글자의 코드값으로 숨은 문자를 식별한다 오른쪽 정렬은 숫자, 왼쪽 정렬은 텍스트일 확률이 높다. 셀 서식이 “텍스트”인 경우 입력값이 모두 문자열로 저장된다.
=VALUE(A2)로 숫자로 변환한다.=--A2를 사용한다.소수점이 쉼표이고 천 단위가 점인 유럽식 데이터는 NUMBERVALUE를 사용한다.
=NUMBERVALUE(A2, ",", ".") '소수점은 콤마, 천 단위는 점인 경우이다 =NUMBERVALUE(A2, ".", ",") '소수점은 점, 천 단위는 콤마인 경우이다 데이터 > 텍스트 나누기 마법사에서 구분 기호 단계를 건너뛰고 열 데이터 형식을 “일반”으로 지정하면 숫자가 자동 변환된다.
웹·ERP·PDF에서 복사된 값은 비가시 공백(CHAR(160)), 전각 공백(U+3000), 전각 숫자(U+FF10~U+FF19), 유사 마이너스 기호(U+2212) 등이 섞여 있다. 아래 정규화 수식을 사용한다.
=LET( s, A2, s1, SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(s,CHAR(160)," "),UNICHAR(65279),""),UNICHAR(12288)," "), s2, SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(s1,UNICHAR(8722),"-"),UNICHAR(8211),"-"),UNICHAR(8212),"-"), s3, TEXTAFTER(TEXTBEFORE(s2," "),""), '이중 공백 정리(Excel 365는 TEXTSPLIT/TOCOL 응용 가능) VALUE(TRIM(CLEAN(s3))) ) 구버전에서는 다음 단순식을 활용한다.
=VALUE(TRIM(SUBSTITUTE(SUBSTITUTE(A2,CHAR(160)," "),UNICHAR(65279),""))) =CODE(MID(A2,1,1))로 확인하고 SUBSTITUTE로 통일해야 한다.사용자 지정 형식은 최대 4개 섹션으로 구성한다. 구조는 양수;음수;0;텍스트이다. 생략 시 기본 규칙이 적용된다.
| 패턴 요소 | 의미 | 예시 |
|---|---|---|
| 0 | 필수 자리수 표시이다. | 0000 → 42는 0042로 표시한다. |
| # | 선택 자리수 표시이다. | #,##0 → 천 단위 구분을 넣는다. |
| ? | 공백으로 자리 맞춤이다. | ???.?? → 소수점 정렬에 사용한다. |
| % | 백분율 변환이다. | 0.00% → 0.123은 12.30%로 표시한다. |
| E+00 | 지수 표기이다. | 0.00E+00 → 12300은 1.23E+04로 표시한다. |
| _ , * | 공백 채움·반복이다. | _);* #,##0 → 괄호 정렬에 사용한다. |
| \ 또는 "텍스트" | 문자 이스케이프 또는 리터럴이다. | \₩#,##0 또는 "원" #,##0이다. |
| [색상] | 색 지정이다. | [빨강]#,##0;[파랑]-#,##0이다. |
| [조건] | 조건부 서식 내장이다. | [>=1000000]0,,"M";0,"K"이다. |
| [$-코드] | 로케일 강제이다. | [$-412]yyyy-mm-dd 는 한국어 로케일이다. |
0 "개" 또는 0 \개처럼 작성한다.사용자 지정 형식은 시스템 로케일의 소수점·천 단위 구분 기호를 따른다. 한국 로케일에서는 소수점은 점, 천 단위는 콤마가 기본이다. 유럽식 CSV를 가져온 경우 표시와 계산이 엇갈릴 수 있다. 다음 중 하나를 선택한다.
[$-412]#,##0.00처럼 한국어 로케일을 강제한다.다음 요소는 셀 서식을 덮어쓴다.
정리 절차는 다음과 같다.
날짜·시간은 일련번호 기반이므로 숫자 서식으로 변환 가능하다. 다만 텍스트 날짜는 먼저 일련번호로 변환해야 한다.
=DATEVALUE(TEXTBEFORE(A2," ")) + TIMEVALUE(TEXTAFTER(A2," ")) YYYYMMDD 같은 텍스트 날짜는 다음과 같이 변환한다.
=DATE(LEFT(A2,4), MID(A2,5,2), RIGHT(A2,2)) [파랑]#,##0;[빨강]-#,##0;0;""이다.[>=100000000]0,," 억";[>=10000]0," 만";0이다.[>=1000000000]0.0,,"B";[>=1000000]0.0,"M";[>=1000]0.0,"K";0이다.\₩#,##0;[빨강]\₩-#,##0;0;\-이다.000-0000-0000이다.000000이다.0.00%이다.[$-412]yyyy"년" m"월" d"일"이다.표시는 바뀌지만 계산은 원래 값으로 진행된다. 반올림이 필요한 경우 함수로 값 자체를 변환한다.
=ROUND(A2, 0) '일반 반올림이다 =ROUNDDOWN(A2, 0) '내림이다 =ROUNDUP(A2, 0) '올림이다 대량 데이터는 VBA로 정규화한다.
Option Explicit Sub NormalizeToNumber() Dim rng As Range, c As Range Set rng = Selection Application.ScreenUpdating = False For Each c In rng If Not IsEmpty(c.Value) Then Dim s As String s = CStr(c.Value) s = Replace(s, Chr(160), " ") '불가시 공백 s = Replace(s, ChrW(&HFEFF), "") 'BOM s = Replace(s, ChrW(&H3000), " ") '전각 공백 s = Replace(s, ChrW(&H2212), "-") '수학 마이너스 → 하이픈 s = WorksheetFunction.Trim(WorksheetFunction.Clean(s)) On Error Resume Next c.Value = CDbl(s) On Error GoTo 0 End If Next c Application.ScreenUpdating = True End Sub 외부 CSV·TXT 파일은 파워쿼리에서 구분기호와 형식을 명시하면 안정적이다.
피벗의 셀 서식은 종종 새로고침 시 초기화된다. “값 필드 설정 > 숫자 형식”에 직접 지정해야 유지된다. 또한 피벗 옵션에서 “서식 및 레이아웃 유지”를 체크한다.
차트 축과 데이터 레이블은 개체별 서식을 사용한다. 축을 선택 후 “축 서식 > 숫자”에서 사용자 지정 형식을 지정한다. 데이터 레이블 역시 “레이블 옵션 > 숫자”에서 별도 지정한다.
| 점검 항목 | 체크 방법 | 조치 |
|---|---|---|
| 숫자 여부 | =ISNUMBER() 결과 확인이다. | 텍스트이면 VALUE 또는 곱하기 1로 변환한다. |
| 숨은 문자 | =LEN()과 =CODE()로 확인한다. | CLEAN, TRIM, SUBSTITUTE로 제거한다. |
| 로케일 구분기호 | 소수점·천 단위 표시 확인이다. | NUMBERVALUE 또는 파워쿼리 로케일 지정한다. |
| 서식 우선순위 | 조건부 서식, 표 스타일, 스타일 적용 여부이다. | 충돌 규칙 해제 후 셀 서식 재적용한다. |
| 개체별 서식 | 피벗·차트 내부 숫자 서식 확인이다. | 해당 개체의 숫자 서식 메뉴에서 지정한다. |
| 형식 문자열 문법 | 섹션 수·기호 유효성 검사이다. | 오탈자 수정 및 로케일 코드 고려한다. |
| 보호·공유 상태 | 시트 보호·공유 모드 여부이다. | 권한 해제 후 변경한다. |
텍스트이거나 사용자 지정 형식에서 #와 0의 위치가 잘못된 것이다. #,#00처럼 최소 두 자리 강제가 필요한 경우가 아니면 #,##0을 사용한다.
음수 섹션에 괄호를 넣고 양수·영·텍스트 섹션까지 4구성으로 맞춘다.
#,##0_);(#,##0);0;"" #,##0;[빨강]-#,##0;"-";"-" #,##0.00;[빨강]-#,##0.00;0.00;"" 금액을 단위에 따라 자동 축약한다.
[>=100000000]0,," 억";[>=10000]0," 만";0 국제 보고서는 다음을 사용한다.
[>=1000000000]0.0,,"B";[>=1000000]0.0,"M";[>=1000]0.0,"K";0 파일을 공유할 때 수신자의 시스템 로케일과 무관하게 표시를 고정한다.
[$-412]yyyy"년" m"월" d"일" h":"mm [$-409]\$#,##0.00;[빨강]\$-#,##0.00 대량 데이터의 유형 오류를 헬퍼 열로 표식한다.
=IF(ISTEXT(A2),"TEXT", IF(NOT(ISNUMBER(A2)),"OTHER", IF(A2<0,"NEG","POS"))) | 시나리오 | 증상 | 원인 | 즉시 처방 |
|---|---|---|---|
| ERP 내보낸 CSV | 콤마·점 반대로 인식이다. | 로케일 상이이다. | NUMBERVALUE로 변환 또는 파워쿼리 로케일 지정이다. |
| 웹에서 복사 | 보이지 않는 공백으로 실패이다. | CHAR(160), BOM 포함이다. | CLEAN, TRIM, SUBSTITUTE로 정리이다. |
| 보고서 템플릿 | 조건부 서식이 덮어씀이다. | 우선순위 충돌이다. | 규칙 정리 후 셀 서식 재적용이다. |
| 피벗 레이아웃 | 새로고침 시 초기화이다. | 필드 서식 분리이다. | 값 필드 설정 > 숫자 형식 지정이다. |
| 차트 축 | 축만 다르게 표시이다. | 개체별 서식이다. | 축 서식의 숫자에서 재지정이다. |
| 전화번호 | 선행 0이 사라짐이다. | 숫자 변환 부적합이다. | 텍스트 유지 후 표시 패턴 000-0000-0000이다. |
=ISNUMBER()로 유형을 판별한다.VALUE/NUMBERVALUE로 변환한다.| 목적 | 형식 문자열 | 비고 |
|---|---|---|
| 천 단위 콤마 | #,##0 | 일반 정수이다. |
| 소수 둘째 자리 | #,##0.00 | 반올림 표시이다. |
| 음수 빨강 | #,##0;[빨강]-#,##0 | 영과 텍스트는 기본값이다. |
| 0은 하이픈 | #,##0;[빨강]-#,##0;"-";"-" | 4섹션 완성이다. |
| K/M/B 축약 | [>=1000000]0.0,,"M";[>=1000]0.0,"K";0 | 조건 사용이다. |
| 한국식 날짜 | [$-412]yyyy"년" m"월" d"일" | 로케일 고정이다. |
| 전화 표시 | 000-0000-0000 | 입력은 텍스트이다. |
다음 데이터를 A열에 준비하고 각 행에 대해 진단과 처방을 수행한다.
12345 12 345 '비가시 공백 포함이다 -123.45 −123.45 'U+2212 마이너스이다 12.345,67 '유럽식이다 0042 20250101 "1,234" '따옴표 포함이다 B열에는 =ISNUMBER(A2), C열에는 =CODE(MID(A2,2,1)) 등 보조 지표를 두고, D열부터 변환 수식과 최종 사용자 지정 형식을 적용한다.
ISNUMBER, 숨은 문자, 자릿수 규칙을 검증한다.셀 서식은 저장된다. 다만 피벗테이블과 차트 개체 내부 서식은 새로고침·데이터 교체 시 초기화될 수 있다. 각 개체의 서식 메뉴에서 다시 지정해야 한다.
숫자로 저장하면 정밀도 손실이 발생한다. 반드시 텍스트로 저장하고 사용자 지정 형식 대신 TEXT 함수로 표시 문자열을 생성한다.
파워쿼리 가져오기를 사용하여 로케일을 한국어로 고정하거나 NUMBERVALUE로 변환한다. 시스템 로케일 변경은 파일 전체에 영향이 크므로 권장하지 않는다.
#,##0;[빨강]-#,##0;"-";"-"를 사용한다.
표를 범위로 변환하거나 표 스타일을 변경하고 숫자 형식을 표 스타일에서 제거한다. 이후 셀 서식을 재적용한다.
표시는 형식으로 처리하고 계산은 ROUND류 함수로 제어한다. 예를 들어 보고용 열은 =TEXT(원값,"#,##0.00")로 문자열을 생성하고, 계산 열은 원값을 그대로 사용한다.