Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기이 글의 목적은 엑셀에서 데이터 정렬 실행 시 발생하는 다양한 오류와 비정상 동작을 체계적으로 진단하고, 현장에서 즉시 적용할 수 있는 실무 중심 해결책과 예방 방법을 제공하는 것이다.
정렬이 “먹히지 않거나” “이상하게” 되는 경우 대다수는 데이터형 혼재, 숨은 문자, 병합셀, 범위 선택 오류, 정렬 방향 설정 실수에 기인한다.
| 증상 | 주된 원인 | 즉시 해결 |
|---|---|---|
| 숫자 오름차순인데 1, 10, 2 순서로 정렬됨 | 숫자가 텍스트로 저장됨(선행 아포스트로피, 공백, 비분리문자 포함) | 텍스트→숫자 변환, TRIM/CLEAN/SUBSTITUTE로 정리, 데이터형 통일 |
| 날짜 최신순 정렬이 뒤죽박죽 | 날짜처럼 보이지만 텍스트임(YYYY.MM.DD, YYYY/MM/DD 혼재, 지역 형식 차이) | DATEVALUE·TEXTSPLIT 등으로 파싱 후 실제 날짜로 변환, 지역형식 확인 |
| 일부 행만 움직이고 열이 어긋남 | 열 단위 대신 셀 범위만 선택, “선택 영역 확장” 경고 무시 | 표 전역 선택 후 정렬, 또는 Ctrl+A로 범위 확장 확인 |
| 정렬이 작동하지 않거나 회색 비활성 | 공유 통합문서·시트 보호·테이블 머리글 감지 오류 | 보호 해제, 표 머리글 확인, 목록을 테이블로 변환 후 정렬 |
| 텍스트 정렬 시 대소문자 우선순위 이상 | 대소문자 구분 옵션 또는 사용자 지정 목록의 개입 | 옵션 재설정, 사용자 지정 목록 비활성화 또는 기본 사전식 정렬 |
| 정렬 후 합계가 틀림 | 숨은 행·필터 잔존, 병합셀로 그룹이 깨짐 | 필터 해제·병합 해제·총합은 SUMIFS/피벗으로 재계산 |
“1, 10, 2” 문제가 나타나면 해당 열의 일부가 텍스트이다. 다음 순서로 정리한다.
NBSP(비분리 공백, 코드 160), 탭(9), 줄바꿈 문자가 섞이면 숫자 인식이 깨진다.
=LET(s,A2, SUBSTITUTe(SUBSTITUTE(SUBSTITUTE(s,CHAR(160),""),CHAR(9),""),CHAR(10),"")) NBSP를 다량 치환하려면 다음을 권장한다.
=SUBSTITUTE(A2,UNICHAR(160),"") 텍스트 숫자는 왼쪽 정렬이며 셀을 선택하면 수식 입력줄에 앞에 작은 따옴표가 보인다. 다음 중 하나를 사용한다.
=VALUE(TRIM(SUBSTITUTE(A2,UNICHAR(160),""))) 엑셀은 날짜를 일련번호로 저장한다. 외형이 날짜처럼 보여도 텍스트이면 정렬이 실패한다.
연·월·일 구분자(./-), 자리수 혼재(2025.9.1 vs 2025-09-01)는 DATE 함수로 통일한다.
=LET(s,A2, a--TEXTSPLIT(TEXTSUBSTITUTE(s,".","/"),"/"), DATE(INDEX(a,1),INDEX(a,2),INDEX(a,3))) YYYYMMDD나 YYMMDD 같은 비구분자 포맷은 MID로 파싱한다.
=DATE(VALUE(LEFT(A2,4)), VALUE(MID(A2,5,2)), VALUE(RIGHT(A2,2))) MM/DD/YYYY와 DD/MM/YYYY 혼재 시 월이 12를 초과하는 값으로 판별하여 분기한다.
=LET(s,TEXTSPLIT(A2,"/"), m--VALUE(INDEX(s,1)), d--VALUE(INDEX(s,2)), y--VALUE(INDEX(s,3)), IF(m>12, DATE(y,d,m), DATE(y,m,d))) 병합된 셀은 정렬을 방해한다. 숨은 행·열이나 필터가 켜진 상태에서 부분 정렬을 하면 총합과 참조가 틀어진다.
Sub UnmergeAllInUsedRange() Dim rng As Range On Error Resume Next Set rng = ActiveSheet.UsedRange If Not rng Is Nothing Then rng.UnMerge End If End Sub 정렬 아이콘을 클릭했을 때 경고가 뜨면 “선택 영역 확장(E)”를 선택해야 전체 레코드를 기준으로 정렬한다. 그렇지 않으면 선택된 열만 이동하여 데이터가 뒤틀린다.
“월, 화, 수…”처럼 사용자 지정 목록이 개입되면 사전식이 아닌 순서로 정렬된다. 의도치 않은 적용을 방지하려면 표준 정렬을 강제한다.
외부 데이터 또는 누적 데이터는 파워 쿼리로 전처리하면 정렬 안정성이 높아진다.
let Source = Excel.CurrentWorkbook(){[Name="tbl"]}[Content], Clean = Table.TransformColumns(Source, {{"Amount", each Text.Replace(_, Character.FromNumber(160), ""), type text}}), ToNumber = Table.TransformColumnTypes(Clean, {{"Amount", type number}}) in ToNumber =XLOOKUP([@사번], 원본[사번], 원본[급여], "누락", 0) 정렬이 끝나면 다음을 최소 체크한다.
| 목적 | 권장 수식 | 비고 |
|---|---|---|
| 양쪽 공백 제거 | =TRIM(A2) | NBSP는 제거 못 하므로 UNICHAR(160) 병행 |
| 비가시문자 제거 | =CLEAN(A2) | 제어문자 제거 |
| NBSP 제거 | =SUBSTITUTE(A2,UNICHAR(160),"") | 웹에서 복사한 텍스트 정리 |
| 텍스트 숫자 변환 | =VALUE(TRIM(SUBSTITUTE(A2,UNICHAR(160),""))) | 형 변환 보조열 추천 |
| 텍스트 날짜 변환 | =DATEVALUE(A2) | 단일 형식일 때 사용 |
| 혼재 날짜 파싱 | =DATE(LEFT(A2,4), MID(A2,6,2), RIGHT(A2,2)) | YYYY-MM-DD 전제 |
=CODE(RIGHT(A2,1))로 맨 끝 문자를 검사한다(32·160이면 공백 계열)하다.=LAMBDA(x, LET(t,TRIM(SUBSTITUTE(x,UNICHAR(160),"")), n,IFERROR(VALUE(t),""), d,IFERROR(DATEVALUE(t),""), IF(n<>"",n, IF(d<>"",d, t)) )) 위 함수를 이름 관리자에 등록하고 정리 대상 범위에 적용하면 정렬 전 데이터 정합성을 표준화할 수 있다.
시트 보호, 공유 통합문서, 피벗테이블 선택 상태, 외부 쿼리 편집 잠금 등이 원인이다. 보호 해제, 통합문서 공유 해제, 일반 범위 선택 후 시도한다.
숨은 행·필터가 남은 상태에서 부분 합산이 되었거나, 병합으로 블록이 어긋난 경우이다. 필터 해제·병합 해제 후 전체 데이터로 재정렬하고 합계를 다시 계산한다.
정렬 대화상자 → 옵션 → 대소문자 구분을 사용한다. 상용 데이터는 일반적으로 대소문자 비구분 정렬을 사용한다.
정렬 기준 열에서 사용자 지정 목록을 제거하고 일반 텍스트로 변환한다. 필요하면 옵션에서 사용자 지정 목록 사용을 피하고 표준 사전식 정렬로 수행한다.
파워 쿼리로 불러와 데이터 형식을 “날짜”로 강제하고, 구분자·지역 형식을 통일한다. 새로 고침 시 항상 같은 규칙이 재적용된다.