
거래처 명단에서 중복을 지웠는데 나중에 보니 있어야 할 행이 사라져 있습니다. 반대로 눈으로 보면 분명히 같은 값인데 중복 제거를 돌려도 그대로 남아 있기도 합니다.
엑셀이 무엇을 같은 값으로 보는지가 상식과 다르기 때문입니다. 영문 대소문자는 무시하고, 앞뒤 공백은 구분합니다. 이 두 가지가 반대 방향으로 작동해서 사고가 납니다.
3줄 요약
apple · Apple · APPLE 은 같은 값입니다. 셋 중 위에 있는 하나만 남고 나머지는 지워집니다
"김철수" 와 "김철수 "(뒤에 공백) 는 다른 값입니다. 중복 제거를 돌려도 둘 다 남습니다. 붙여넣은 데이터에서 중복이 안 지워지면 대부분 이것입니다
[중복된 항목 제거]는 원본을 지웁니다. 원본을 남기려면 고급 필터나 UNIQUE 함수를 씁니다
이 글에서 확인할 수 있는 것
1. 엑셀이 같은 값으로 보는 기준
값을 두 개씩만 넣고 [데이터] → [중복된 항목 제거]를 돌려 봤습니다. 하나가 지워지면 엑셀이 같은 값으로 본 것이고, 둘 다 남으면 다른 값으로 본 것입니다.
| 넣은 값 두 개 | 화면에 보이는 것 | 결과 |
|---|---|---|
| apple / Apple | apple / Apple | 같은 값 — 하나 지워짐 |
| 김철수 / 김철수(뒤 공백) | 김철수 / 김철수 | 다른 값 — 둘 다 남음 |
| 숫자 1 / 텍스트 "1" | 1 / 1 | 다른 값 — 둘 다 남음 |
| 숫자 1 / 숫자 1(표시 형식 0.00) | 1 / 1.00 | 다른 값 — 둘 다 남음 |
| 같은 날짜(표시 형식만 다름) | 2026-01-01 / 2026/01/01 | 다른 값 — 둘 다 남음 |
정리하면 이렇습니다.
- 영문 대소문자는 무시합니다. 보이는 게 달라도 지웁니다
- 앞뒤 공백은 구분합니다. 똑같아 보여도 안 지웁니다
- 자료형이 다르면 다른 값입니다. 화면에 똑같이 1로 보여도 숫자와 텍스트는 별개입니다
- 숫자·날짜는 표시 형식까지 같아야 같은 값입니다
같은 규칙이 [조건부 서식] → [셀 강조 규칙] → [중복 값]에도 그대로 적용됩니다. 조건부 서식의 중복 값 규칙은 내부적으로 COUNTIF 를 쓰는데, apple·Apple·APPLE 을 넣고 COUNTIF 로 세면 셋 다 3 이 나옵니다. UNIQUE 함수도 마찬가지여서 셋을 넣으면 apple 하나만 남습니다.
중복을 찾는 세 방법이 모두 같은 기준으로 움직인다는 뜻입니다. 조건부 서식으로 표시해 놓고 눈으로 확인한 뒤 지워도 결과는 같습니다.
2. 대소문자를 구분해서 지우려면
제품 코드나 아이디처럼 대소문자가 의미를 갖는 자료라면 기본 기능을 그냥 쓰면 안 됩니다. AB1 과 ab1 이 다른 물건인데 하나가 지워집니다.
대소문자를 구분해서 세려면 EXACT 를 씁니다. EXACT 는 두 문자열이 완전히 같을 때만 TRUE 를 냅니다.
=SUMPRODUCT(--EXACT($A$2:$A$100, A2))
이 값이 1 이면 그 행은 진짜 유일한 값이고, 2 이상이면 대소문자까지 똑같은 짝이 있다는 뜻입니다. 앞의 apple·Apple·APPLE 에 이 수식을 넣으면 COUNTIF 는 3 을 내지만 EXACT 는 각각 1 을 냅니다.
이 열을 만들어 두고 값이 2 이상인 행만 걸러 지우면 대소문자를 구분한 중복 제거가 됩니다.
3. 공백 때문에 안 지워질 때
웹 화면이나 다른 시스템에서 복사해 붙여넣은 자료에서 중복이 지워지지 않는다면 거의 이것입니다. 눈으로는 구분이 안 되니 먼저 공백이 있는지부터 확인합니다.
=LEN(A2)
김철수 는 3, 김철수 는 4 가 나옵니다. 옆 열에 LEN 을 걸어 두면 길이가 튀는 행이 바로 보입니다.
없애는 것은 TRIM 입니다. 앞뒤 공백을 지우고 단어 사이 연속 공백도 하나로 줄여 줍니다.
=TRIM(A2)
다만 웹에서 복사한 자료에는 일반 공백이 아니라 줄바꿈 없는 공백(non-breaking space)이 섞여 있는 경우가 있습니다. 이건 TRIM 이 못 지웁니다. LEN 이 여전히 줄지 않으면 이걸 의심합니다.
=TRIM(SUBSTITUTE(A2, CHAR(160), " "))
CHAR(160) 이 그 공백입니다. 먼저 일반 공백으로 바꾼 뒤 TRIM 을 겁니다.
순서는 이렇습니다. 빈 열에 TRIM 수식 → 결과를 값으로 붙여넣기 → 원래 열을 지우고 → 중복 제거. 수식이 들어 있는 상태로 중복 제거를 돌리면 참조가 깨집니다.
4. 숫자와 날짜는 규칙이 하나 더 있습니다
3번까지가 텍스트 이야기라면 숫자와 날짜에는 표시 형식이 끼어듭니다.
같은 숫자 1 인데 한 셀은 일반 형식이고 다른 셀은 0.00 형식이라 1.00 으로 보이면, 엑셀은 이 둘을 다른 값으로 봅니다. 날짜도 같습니다. 같은 날인데 yyyy-mm-dd 와 yyyy/mm/dd 로 다르게 표시돼 있으면 안 지워집니다.
반대로 자료형이 다른 경우도 있습니다. 화면에 똑같이 1 로 보여도 하나는 숫자이고 하나는 텍스트면 다른 값입니다. 텍스트로 저장된 숫자는 셀 왼쪽에 붙고 왼쪽 위에 초록 삼각형이 뜨니 그걸로 구분합니다.
그래서 숫자·날짜 열은 중복 제거 전에 표시 형식을 한 번 통일하는 편이 안전합니다. 열 전체를 선택하고 원하는 형식을 다시 지정하면 됩니다.
5. 원본을 남기는 세 가지 방법
[중복된 항목 제거]는 원본에서 행을 실제로 지웁니다. 되돌리려면 실행 취소밖에 없고, 저장하고 닫은 뒤에는 방법이 없습니다. 원본이 필요하다면 다른 방법을 씁니다.
| 방법 | 원본 | 결과가 놓이는 곳 | 자동 갱신 |
|---|---|---|---|
| 데이터 → 중복된 항목 제거 | 지워짐 | 그 자리 | 안 됨 |
| 조건부 서식 → 중복 값 | 유지 | 그 자리에 색만 | 됨 |
| 데이터 → 고급 필터 → 다른 장소에 복사 | 유지 | 지정한 위치 | 안 됨 |
| UNIQUE 함수 | 유지 | 수식을 넣은 곳 | 됨 |
고급 필터는 [데이터] → [고급]에서 "다른 장소에 복사"를 고르고 "동일한 레코드는 하나만"을 체크합니다. 원본은 그대로 두고 중복을 걸러낸 목록을 옆에 만들어 줍니다.
UNIQUE 는 마이크로소프트 365 와 엑셀 2021 이상에서 씁니다. 원본이 바뀌면 결과도 따라 바뀌는 게 장점입니다.
=UNIQUE(A2:A100)
한 번만 나온 값(중복이 아예 없는 값)만 뽑으려면 세 번째 인수에 TRUE 를 줍니다.
=UNIQUE(A2:A100, FALSE, TRUE)
6. 어느 행이 남는가
중복된 값이 여럿일 때 엑셀은 위에 있는 행을 남기고 아래를 지웁니다. apple(2행) · Apple(3행) · APPLE(4행) 순서로 넣고 돌리면 2행의 apple 이 남습니다.
이게 중요한 이유는 중복 행마다 다른 열의 값이 다를 수 있기 때문입니다. 같은 거래처가 두 번 들어 있는데 최근 거래일이 서로 다르다면, 그냥 돌리면 위에 있던 오래된 행이 남고 최신 행이 지워집니다.
그래서 지우기 전에 원하는 행이 위로 오도록 정렬해 둬야 합니다. 최신 것을 남기려면 날짜 기준 내림차순으로 정렬한 다음 중복 제거를 돌립니다.
여러 열을 기준으로 지울 때도 주의합니다. 중복된 항목 제거 창에서 열을 여러 개 체크하면 체크한 열이 전부 같은 행만 중복으로 봅니다. 이름만 같고 전화번호가 다르면 지워지지 않습니다. 반대로 이름 열 하나만 체크하면 전화번호가 달라도 지워집니다.
정리
- 엑셀은 대소문자를 무시하고 공백을 구분합니다. 중복 제거·조건부 서식·UNIQUE 모두 같습니다
- 대소문자를 구분하려면 EXACT, 공백을 없애려면 TRIM(그래도 안 되면 CHAR(160) 치환)
- 숫자·날짜는 표시 형식과 자료형까지 같아야 같은 값입니다
- 원본을 남기려면 고급 필터 또는 UNIQUE
- 남는 것은 위에 있는 행입니다. 지우기 전에 정렬부터 합니다
'오피스' 카테고리의 다른 글
| 엑셀 파일 손상 오류, 대부분 손상이 아닙니다 (0) | 2015.06.16 |
|---|