홈 / 업무 가이드 / 데이터 정리
데이터 정리

CSV 중복 제거: 기준 열과 처음·마지막 행 유지 예제

DataWork Tools 편집 · 수정 2026.11.06

같은 사람이 두 번 나왔다고 두 행이 불필요한 것은 아닙니다. 고객 명부에서는 같은 사번이 중복일 수 있지만 주문 이력에서는 한 고객의 서로 다른 거래일 수 있습니다. 삭제 전에 한 행의 의미, 비교 열, 남길 기록을 정하고 원본을 별도 보관하세요.

사번 기준으로 처음 또는 마지막 기록 남기기

다음은 가상 직원 데이터입니다. 중복 행 제거 도구의 ‘샘플 넣기’와 아래 다운로드는 같은 입력을 사용합니다.

샘플 CSV 다운로드 ↓

사번,이름,부서,수정일
0012,김민수,영업,2026-11-01
0024,이지은,개발,2026-11-02
0012,김민수,기획,2026-11-05
0036,박서준,운영,2026-11-04
  1. 도구에서 ‘샘플 넣기’를 누릅니다. 비교 열은 사번인 1로 설정됩니다.
  2. ‘처음 행 유지’로 실행하면 사번 0012의 영업 행이 남습니다. 입력 4행 → 결과 3행, 중복 1행 제거입니다.
  3. ‘마지막 행 유지’로 바꾸고 다시 실행하면 사번 0012의 기획 행이 남습니다. 아래는 마지막 유지의 전체 결과입니다.
사번,이름,부서,수정일
0024,이지은,개발,2026-11-02
0012,김민수,기획,2026-11-05
0036,박서준,운영,2026-11-04

결과 순서는 0024 → 0012 → 0036입니다. 그룹을 처음 만난 순서로 재배열하지 않고, 선택된 원본 행의 상대 순서를 유지하기 때문입니다. 헤더는 중복 판정에 넣지 않고 한 번만 남깁니다.

전체 행과 복합 키는 결과가 다릅니다

비교 열 입력예제 결과이유
비움4행부서·수정일이 달라 완전히 같은 행이 없습니다.
13행사번 0012 두 행을 같은 그룹으로 묶습니다.
1,34행사번과 부서가 모두 같아야 중복입니다.

열 번호는 1부터 시작합니다. 기준 열에 없는 다른 값은 판단에 사용하지 않으며, 남기지 않은 행의 메모나 금액을 합치지 않습니다. 빈 번호·소수·범위를 벗어난 번호는 오류입니다.

마지막 행이 항상 최신 기록은 아닙니다

이 예제의 사번 0012는 새 기록이 아래에 있지만 실제 파일은 날짜순이 아닐 수 있습니다. 도구는 수정일을 해석하지 않으므로 마지막 행이 오래된 날짜여도 그대로 선택합니다. 최신 날짜를 남겨야 한다면 CSV 정렬 도구에서 자릿수가 일정한 YYYY-MM-DD 날짜를 텍스트 오름차순으로 정렬하고 동률 기준까지 검수한 뒤 마지막 행을 남기세요. 2026-2-1과 2026-11-1처럼 형식이 섞인 날짜에는 이 방법을 그대로 쓰지 마세요. 정렬 방식과 빈값 처리 가이드도 확인하세요.

공백·대소문자·빈 기준값의 함정

  • 앞뒤 공백 무시는 비교값에만 적용합니다. 선택된 행의 원본 공백을 지우지 않습니다. 값도 정리하려면 CSV 공백 정리를 별도로 사용하세요.
  • A와 a, 0012와 12는 다른 값입니다. 코드 앞자리 0은 텍스트로 보존하되, 엑셀로 다시 열 때도 코드 열 가져오기 방법을 확인하세요.
  • 기준 열이 빈 행도 같은 빈 키로 묶입니다. 사번이 없는 여러 사람을 한 명으로 줄이지 않도록 먼저 CSV 조건 필터로 빈값을 분리해 검수하세요. 복합 키에서는 선택한 모든 값이 같아야 같은 그룹입니다.

오류 해결과 처리 한도

CSV 입력은 5MB·20,000개 데이터 행·200열까지 지원합니다. 첫 행은 반드시 헤더로 준비하세요. 행마다 열 수가 다르면 해당 행을 확인하고 쉼표가 든 셀은 큰따옴표로 감싸야 합니다. 닫히지 않은 따옴표, 잘못된 인코딩, 유효하지 않은 비교 열을 수정한 다음 다시 실행하세요. 한글이 깨지면 파일을 다시 선택하기 전에 UTF-8/EUC-KR 설정을 확인합니다.

저장 전 검수 체크리스트

  1. 입력 데이터 행 수 = 결과 행 수 + 제거 행 수인지 확인합니다. 샘플은 4 = 3 + 1입니다.
  2. 미리보기는 첫 50개 데이터 행이므로 큰 결과는 전체 파일도 검수합니다.
  3. 기준이 같은 대표 행, 빈 기준값, 남은 부서·금액을 대조합니다.
  4. 옵션이나 입력을 바꾸면 이전 결과가 비워집니다. 다시 실행한 결과를 새 파일로 저장합니다.

다운로드는 UTF-8 BOM CSV입니다. 수식처럼 시작하는 값(=, +, -, @ 등)은 작은따옴표가 붙어 값이 달라질 수 있습니다. 이 보호 처리 외에도 엑셀의 자동 날짜·숫자 변환을 별도로 검수하세요. 파일과 입력은 현재 브라우저에서 처리하며 서버로 전송하지 않습니다.

샘플로 처음·마지막 행 유지 비교하기 → · 여러 파일부터 합쳐야 한다면 CSV 병합을 먼저 실행하세요.

함께 읽기

CSV 한글이 깨질 때: UTF-8과 EUC-KR 구분하기
사번 0012가 12로 바뀌는 이유와 보존 방법
CSV를 SQL INSERT로 바꾸기 전 확인할 5가지
사진 여러 장 크기 맞추기: 여백·품질·형식과 ZIP 저장
두 CSV 파일 비교: 추가·삭제·변경 행을 찾는 방법
VLOOKUP 없이 두 CSV 합치기: LEFT와 INNER JOIN 차이
CSV 열 순서 바꾸기·열 이름 변경·불필요한 열 삭제
JSON을 CSV로 변환할 때 빈칸·중첩 데이터·큰 숫자 확인하기
JSON 문법 오류 찾기: 따옴표·쉼표·큰 숫자 검수 방법
CSV 파일 분할과 행·열 전치: 처리 순서와 결과 검수
CSV 공백과 빈 행 정리: 지워도 되는 값부터 구분하기
CSV와 TSV 차이: 엑셀에서 복사한 표를 파일로 바꾸기
CSV를 Markdown 표로 만들기: README에 표 붙여넣는 방법
CSV 정렬에서 10이 2보다 먼저 나오는 이유: 문자열과 숫자 정렬
CSV에서 필요한 행만 추출하기: 포함·일치·빈값 필터의 차이
JSONL·NDJSON과 JSON 배열의 차이: 줄별 로그를 변환하는 방법
JSON 비교에서 키 순서와 실제 데이터 변경을 구분하는 방법
2026 연봉 실수령액: 지급 월·부양가족·비과세액이 달라지는 이유
내 연봉은 상위 몇 퍼센트? 월소득 통계 구간으로 읽는 법
3.3% 계산과 역산: 원천징수액과 최종 세금은 다릅니다
부가세 포함과 별도: 공급가액을 1.1로 나누는 이유
시급에서 월급으로: 209시간을 모두에게 적용하면 안 되는 이유
연봉 인상률 계산: 월 증가액과 실수령 증가액 구분하기
퇴직금 예상액: 최근 3개월·평균임금·통상임금 확인하기
주휴수당 계산: 실제 근무시간과 소정근로시간 구분하기
CSV 파일 여러 개 합치기: 예제 2개로 헤더·중복·행 수 확인
엑셀 CSV 변환 방법: 예제 파일로 한글·앞자리 0·시트 확인