Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기이 글의 목적은 엑셀에서 ‘중복 항목 제거’가 예상대로 동작하지 않을 때 발생 원인을 체계적으로 진단하고, 실무에서 바로 적용할 수 있는 해결 절차와 대안을 단계별로 제공하는 것이다.
중복 제거는 사용자가 지정한 열 조합을 기준으로 동일한 값이 반복되는 행을 찾아 첫 번째 항목만 남기고 나머지를 삭제하는 기능이다. 비교는 셀의 표시값이 아니라 실제 저장 값(값·형식·숫자/텍스트 구분)에 의해 좌우되므로 데이터 정규화가 선행되어야 한다. 또한 범위가 머지(병합) 없이 직사각형으로 연속되어 있어야 하며, 표 객체(테이블) 상태에서는 표 전체 또는 선택 열을 기준으로 수행된다.
| 증상 | 주요 원인 | 즉시 조치 |
|---|---|---|
| 중복이 명확히 보이는데 제거 결과가 “0개”로 나온다 | 숫자와 텍스트 혼재, 숨은 공백·개행, 유니코드 비가시 문자, 앞에 작은따옴표 | 데이터 형식 통일, TRIM/CLEAN/SUBSTITUTE로 정리, 유니코드 공백 제거, 값으로 붙여넣기 |
| 일부만 제거되고 나머지는 남아 있다 | 비교 열 선택 오류, 범위 일부만 선택, 필터로 숨긴 행 존재, 병합 셀 포함 | 전체 표 선택 후 기준 열 재지정, 필터 해제, 병합 해제 후 재시도 |
| 버튼 클릭이 비활성이다 | 공유 통합 문서, 보호 시트, 외부 연결 편집 제한, 매크로 제한 정책 | 시트 보호 해제, 공유 모드 해제, 편집 권한 확보 |
| 보이는 값은 같지만 다른 값으로 인식된다 | 표시 형식에 의한 시각적 동일, 소수점 이진 반올림 오차, 텍스트 서식 숫자 | 반올림 고정, 값 반올림 처리, 숫자 변환, 정밀 비교 보조열 추가 |
| 특정 열만 중복 제거가 안 된다 | 유니코드 정규화 차이(NFC/NFKC), 전각/반각 차이, NBSP(160) 공백 | 정규화 함수 또는 치환 스크립트 적용, 전각→반각 변환, NBSP 제거 |
데이터 끝·처음의 공백, 줄바꿈(CHAR(10)), 유니코드 NBSP(160), 얇은 공백(8239) 등은 화면에서 구별하기 어렵지만 값 비교에는 영향을 준다.
=LET(x,A2, SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( TRIM(CLEAN(x)), CHAR(160),""), UNICHAR(8239),""), UNICHAR(8203),"")) 위 수식은 일반 공백과 NBSP·얇은 공백·제로폭 공간을 제거한다. 대량 처리 시 보조열에 적용 후 값으로 붙여넣기한다.
같은 모양의 “12345”가 숫자와 텍스트로 혼재하면 서로 다른 값으로 취급한다. 다음 절차로 통일한다.
=--A2 =VALUE(A2) =TEXT(A2,"0") ' 선행 0 유지 =TEXT(A2,"000000") ' 고정 길이 ID 날짜·시간·통화 서식은 같은 모양으로 보이게 하지만 실값은 다를 수 있다. 예를 들어 2025-10-25 09:00와 2025-10-25 09:00:00.500은 표시상 동일해도 서로 다르다. 비교 전 반올림·자르기를 적용한다.
=ROUND(A2,2) ' 소수 2자리 반올림 =INT((A2*24*60*60))/86400 ' 초 단위로 자르기 =DATE(YEAR(A2),MONTH(A2),DAY(A2)) ' 날짜만 “é”는 조합형과 단일형이 존재하며 코드 포인트가 다르면 다른 값으로 인식한다. 한글·일문 전각/반각도 동일하다.
' Power Query: 변환 > 텍스트 정규화(NFKC) 사용 ' 수식 기반 치환 예(간이): =SUBSTITUTE(SUBSTITUTE(A2,"-","-"),"(","(") 대량·정밀 정규화는 Power Query의 텍스트 정규화 또는 스크립트를 활용한다.
병합 셀은 범위의 직사각형성을 깨뜨려 기능이 회색이 되거나 결과가 불완전해진다. 필터로 숨긴 행은 제거 기준에 포함되지만, 사용자가 범위를 좁게 선택하면 일부만 적용될 수 있다. 병합 해제, 전체 표 선택 후 다시 시도한다.
시트 보호, 통합 문서 공유(옛 기능), 공동 편집 제한, 외부 연결 잠금은 명령을 비활성화한다. 보호 해제와 편집 권한을 확보 후 다시 시도한다.
=LEN(A2) ' 길이 비교 =CODE(RIGHT(A2,1)) ' 마지막 문자 코드 =IF(EXACT(A2,B2),"동일","상이") ' 대/소문자 포함 동일성 =SUMPRODUCT(--(A:A<>B:B)) ' 열 간 상이 건수 보조열로 길이·문자코드·대소문자 구분 동일성을 표시하면 숨은 차이를 빠르게 찾을 수 있다.
=COUNTIF($A:$A,A2) ' 단일 열 중복 카운트 =COUNTIFS($A:$A,A2,$B:$B,B2) ' 다중 열 조합 중복 =IF(COUNTIFS($A:$A,A2,$B:$B,B2)>1,"중복","고유") 조건부 서식의 ‘수식을 사용하여 서식 지정’을 활용해 중복을 시각적으로 강조한다.
Power Query는 프로세스를 기록하여 재실행이 용이하고 유니코드 정규화 등 고급 정제를 지원한다.
원본을 보존하면서 고유 목록을 만드는 데 유용하다.
=UNIQUE(A2:A1000) ' 단일 열 =UNIQUE(A2:C1000,0,1) ' 열 조합 기준 고유 행 =SORT(UNIQUE(FILTER(A2:A1000,A2:A1000<>""))) ' 공백 제외 동적 배열은 파워쿼리 없이도 재계산 기반 고유 목록을 즉시 생성한다.
원인: NBSP 공백 포함, 일부는 텍스트, 일부는 숫자이다. 조치: 보조열에 정규화 수식 적용 후 값 붙여넣기하고 해당 열을 기준으로 중복 제거한다.
원인: 시간 정보가 00:00:00과 00:00:00.500으로 상이하다. 조치: DATE 함수로 날짜만 추출한 보조열을 기준으로 제거한다.
원인: 일부는 숫자 123, 일부는 텍스트 "0123"이다. 조치: TEXT(A2,"0000")로 통일 후 값 붙여넣기한다.
Sub NormalizeSelection() Dim c As Range For Each c In Selection.Cells If Not IsEmpty(c.Value) Then Dim s As String s = CStr(c.Value) s = WorksheetFunction.Clean(s) s = WorksheetFunction.Trim(Replace(Replace(Replace(s, Chr(160), " "), ChrW(8239), " "), ChrW(8203), "")) c.Value = s End If Next c End Sub 선택 범위를 지정하고 실행하면 CLEAN/TRIM과 NBSP·얇은 공백·제로폭 공간을 제거한다.
Sub TextToNumber() Dim c As Range For Each c In Selection If VarType(c.Value) = vbString Then If IsNumeric(c.Value) Then c.Value = CDbl(c.Value) End If Next c End Sub | 문제 유형 | 핵심 레버리지 | 권장 도구 |
|---|---|---|
| 숨은 문자·공백 | TRIM+CLEAN+UNICHAR 치환으로 값 동질화 | 수식, VBA |
| 숫자/텍스트 혼재 | VALUE/-- 또는 TEXT로 단일 형식 고정 | 수식, 선택하여 붙여넣기 |
| 날짜·시간 미세 차이 | 반올림·자르기·DATE로 비교 단위 통일 | 수식 |
| 유니코드 정규화 | NFKC 정규화, 전각→반각 변환 | Power Query |
| 범위 구조 문제 | 병합 해제, 필터 해제, 표 범위 재선정 | 리본 명령 |
| 권한·보호 문제 | 보호 해제, 공유 모드 해제, 권한 획득 | 검토 탭 |
표시 형식이 같을 뿐 실값이 다르기 때문이다. 공백·개행·NBSP·유니코드 정규화 차이, 소수점 잔차, 텍스트/숫자 혼재가 대표적이다. 정규화와 형식 통일 후 다시 시도한다.
반복 처리와 열 추가·삭제가 많은 경우 표가 안정적이다. 표는 구조적 참조와 자동 확장, Power Query 연계를 제공한다. 단발성 청소라면 범위도 충분하다.
고급 필터의 ‘고유 레코드만’을 사용하거나 UNIQUE 함수를 사용한다. 원본은 보존되고 결과만 새 영역에 생성된다.
Power Query로 로드하여 중복 제거 후 로드하는 것이 효율적이다. 수식은 계산 비용이 누적되므로 결과를 값으로 고정한다.
Power Query의 텍스트 정규화를 사용하거나 변환 규칙을 만든 후 SUBSTITUTE로 일괄 치환한다. 일본어·중국어 기호는 전각을 반각으로 통일하는 것이 일반적이다.