AI 해결 노트 · 2026-09-18 · 실측 2026-09-18

엑셀 중복값 지우기 — 이름 기준과 이름+부서 기준이 얼마나 다른지 세어 봤습니다

한 줄로

같은 15행 명단에 「중복된 항목 제거」를 돌렸더니 기준을 무엇으로 잡느냐에 따라 7행·9행·12행으로 갈렸습니다. 이름만 기준으로 잡으면 같은 이름 중 맨 위 한 행만 남아, 사번이 다른 동명이인도 함께 지워집니다. 지우기 전에 「이 표에서 한 건을 가리키는 열이 무엇인가」를 먼저 정하셔야 합니다.

이런 분께

실측 환경

항목
OSMicrosoft Windows 11 Home 10.0.26200 (build 26200)
PowerShell 7.6.6
엑셀Excel 16.0, build 20326
대조용Python 3.12.10 + pandas 3.0.3 + openpyxl 3.1.5
시험 파일직접 만든 더미 명단 — 사번·이름·부서 3열 × 15행

시험에 쓴 명단

일부러 세 가지를 섞었습니다. 완전히 같은 행(사번까지 같음), 이름은 같지만 부서가 다른 동명이인, 이름과 부서가 같은데 사번이 다른 동명이인입니다.

엑셀 행사번이름부서어떤 행인가
2K2101홍길동영업1팀
3K2102김철수인사팀
4K2103이영희개발팀
5K2104홍길동생산팀2행과 이름만 같은 다른 사람
6K2101홍길동영업1팀2행과 완전히 같은 행
7K2105박민수영업2팀
8K2102김철수인사팀3행과 완전히 같은 행
9K2106이영희개발팀4행과 이름·부서가 같고 사번만 다름
10K2107최지우총무팀
11K2108박민수생산팀7행과 이름만 같은 다른 사람
12K2103이영희개발팀4행과 완전히 같은 행
13K2109강한별영업1팀
14K2110홍길동영업1팀2행과 이름·부서가 같고 사번만 다름
15K2111최지우총무팀10행과 이름·부서가 같고 사번만 다름
16K2112정다은개발팀

이름·사번·부서는 전부 지어낸 값입니다.

시험에 쓴 더미 명단 15행
시험에 쓴 더미 명단 15행

세 가지 기준으로 각각 돌렸습니다

화면에서는 표 안을 한 번 누른 뒤 데이터 탭 → 데이터 도구 그룹 → 중복된 항목 제거 를 누르고, 뜬 창에서 기준으로 삼을 열만 체크합니다. 다만 이 글의 숫자는 그 창을 눌러서 얻은 값이 아닙니다. COM의 RemoveDuplicates 에 기준 열을 넘겨서 얻었고, 화면 조작 결과와 한 줄씩 대조하지는 못했습니다.

$ws = $wb.Worksheets.Item(1)

# 기준 A — 이름(2번째 열)만. Header:=xlYes 는 두 번째 인수 1
$ws.Range("A1:C16").RemoveDuplicates(2, 1)

# 기준 B — 이름+부서(2·3번째 열)
$cols = New-Object object[] 2; $cols[0] = 2; $cols[1] = 3
$ws.Range("A1:C16").RemoveDuplicates($cols, 1)

# 기준 C — 사번+이름+부서 세 열 전부
$cols3 = New-Object object[] 3; $cols3[0] = 1; $cols3[1] = 2; $cols3[2] = 3
$ws.Range("A1:C16").RemoveDuplicates($cols3, 1)

기준마다 원본 파일을 새로 복사해서 돌렸습니다. 한 파일에 이어서 돌리면 앞 기준에서 이미 지워진 행이 빠진 채로 계산돼 결과가 섞입니다.

남은 행 수는 이렇게 셌습니다. A열 맨 끝 칸에서 위쪽으로 올라가며(-4162 = xlUp) 값이 있는 마지막 행을 찾는 방식입니다. 이 명단은 머리글 아래로 빈칸 없이 이어지므로 마지막 행 번호에서 1을 빼면 데이터 행 수가 됩니다.

$last = $ws.Cells.Item($ws.Rows.Count, 1).End(-4162).Row
"남은 데이터 행 수 = " + ($last - 1)

결과 — 15행이 7행·9행·12행으로 갈립니다

기준체크하는 열남은 행지워진 행
A이름7행8행
B이름 + 부서9행6행
C사번 + 이름 + 부서12행3행

기준 A로 남은 7행은 홍길동(K2101)·김철수(K2102)·이영희(K2103)·박민수(K2105)·최지우(K2107)·강한별(K2109)·정다은(K2112)이었습니다. 생산팀 홍길동(K2104)과 생산팀 박민수(K2108)가 사라졌습니다. 이름이 겹친다는 이유만으로 다른 부서 사람이 명단에서 빠진 것입니다.

이름만 기준 — 7행만 남았다. 생산팀 홍길동·박민수가 사라졌다
이름만 기준 — 7행만 남았다. 생산팀 홍길동·박민수가 사라졌다

기준 B로 남은 9행에는 생산팀 홍길동(K2104)과 생산팀 박민수(K2108)가 돌아왔습니다. 대신 개발팀 이영희(K2106)와 영업1팀 홍길동(K2110), 총무팀 최지우(K2111)가 빠졌습니다. 이름과 부서가 같은 동명이인은 여전히 구분되지 않습니다.

이름+부서 기준 — 9행이 남았다
이름+부서 기준 — 9행이 남았다

기준 C에서 지워진 3행은 6행(K2101 홍길동)·8행(K2102 김철수)·12행(K2103 이영희)뿐이었습니다. 세 열이 전부 같은, 말 그대로 완전히 겹친 행들입니다.

세 기준 모두 겹친 행 가운데 가장 위에 있는 행이 남았습니다. 기준 A에서 홍길동 자리에 2행의 K2101이 남고 5행 K2104·14행 K2110이 지워진 것이 그 결과입니다. 그러니 남기고 싶은 행이 따로 있다면 지우기 전에 정렬로 그 행을 위로 올려 두는 편이 안전합니다. 다만 저희가 날짜 열로 정렬한 뒤 최신 행이 남는지까지 시험해 보지는 않았습니다.

파이썬으로 같은 일을 하면

pandasdrop_duplicateskeep="first" 를 주면 엑셀과 같이 첫 행을 남깁니다.

import pandas as pd
df = pd.read_excel("E1_명단.xlsx")
df.drop_duplicates(subset=["이름"], keep="first")                  # 7행
df.drop_duplicates(subset=["이름", "부서"], keep="first")           # 9행
df.drop_duplicates(subset=["사번", "이름", "부서"], keep="first")    # 12행

엑셀이 남긴 행과 pandas가 남긴 행을 한 줄씩 대조했더니 세 기준 모두 행 수와 내용이 같았습니다.

기준엑셀pandas내용 일치
이름만7행7행True
이름+부서9행9행True
사번+이름+부서12행12행True

저희는 세 기준 모두 subset 에 열 이름을 직접 적었습니다.

어떤 기준을 골라야 하나

이 명단에서 한 사람을 가리키는 열은 사번입니다. 그러니 답은 「사번을 포함해서 지운다」입니다. 판단은 이렇게 해 보시면 됩니다.

  1. 그 번호가 무엇을 하나로 세는 번호인가 — 사번처럼 사람 하나에 하나씩 붙는 번호라면 기준에 넣습니다. 반대로 주문번호는 한 주문에 품목이 여러 줄일 수 있어서, 번호가 같다고 같은 행은 아닙니다. 번호가 세는 단위를 먼저 확인하셔야 합니다.
  2. 고유 번호가 없다면, 무엇이 같아야 같은 사람인가 — 이름만으로는 부족하고, 이름+전화번호나 이름+생년월일처럼 겹칠 확률이 낮은 조합을 찾습니다.
  3. 지우기 전에 세어 둡니다 — 지우기 전 행 수와 지운 뒤 행 수를 적어 두고, 줄어든 숫자가 납득되는지 봅니다. 15행이 7행이 되면 절반이 넘는 8행이 지워진 것이니 한 번 멈춰야 할 신호입니다.
  4. 원본을 따로 둡니다 — 「중복된 항목 제거」는 행을 실제로 지웁니다. 저희도 기준마다 원본 파일을 새로 복사해서 돌렸습니다. 한 파일에 세 기준을 이어서 돌리면 결과가 섞입니다.

실패한 것

확인하지 않은 것

함께 보기