• 최초 작성일: 2001-06-05
  • 최종 수정일: 2026-09-29
  • 조회수: 23 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 중복된 행만 추출하기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

질문 하나

엑셀 초보자 인데요, 업무 중 답답한 것이 있어 질문드립니다. 여러 필드가 있는 데이터베이스가 있는데 필드 중에서 이름과 생년월일을 비교해서 같은 값이 두 개 이상 있는 행(중복입력된 레코드)만 나타내는 방법이 없을까요? 단, 엑셀 함수를 사용(VBA는 모름).

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 지음

📊 신간 전자책(PDF) · 287쪽 · 13500원

엑셀 대시보드를 만드는 최적의 '표준 3계층 구조'

  • 3초 안에 읽히는 화면 설계 감각 습득
  • Microsoft Excel MVP의 실전 노하우 수록
  • 중간마진 없는 합리적인 가격, 오직 아이엑셀러에서만!
지금 구매하기 완성 화면 보기

중복된 행만 추출하기

핵심 요약

  • 이름과 생년월일처럼 여러 기준이 중복된 레코드만 추리려면 고급 필터의 수식 조건을 활용할 수 있습니다.
  • 조건 범위의 필드명은 원본 데이터의 필드명과 다르게 만들고 COUNTIF로 각 기준이 두 번 이상 등장하는지 검사합니다.
  • 고급 필터를 실행하면 조건을 만족하는 중복 레코드만 한 번씩 추려 별도의 결과 영역에 표시할 수 있습니다.

일단 예제 데이터를 보도록 하지요.

이름 생년월일 직급 연봉 부서 입사일 결혼여부
이순신 1968-01-01 사원 22000000 총무부 1995-01-01 =TRUE()
김유신 1969-01-01 부장 55000000 영업부 1988-07-01 =TRUE()
이순신 1968-01-01 사원 22000000 총무부 1995-01-01 =TRUE()
김유신 1969-01-01 부장 55000000 영업부 1988-07-01 =TRUE()
장진 1970-01-05 전무 100000000 영업부 1995-12-01 =TRUE()
박종태 1980-07-31 상무 80000000 기획부 1992-07-15 =TRUE()
이순신 1968-01-01 사원 22000000 총무부 1995-01-01 =TRUE()
권현욱 1969-01-01 대리 40000000 경리부 1994-01-01 =FALSE()
주정민 1972-08-01 과장 50000000 영업부 1990-07-15 =TRUE()
박아름 1985-09-04 주임 18500000 영업부 1999-12-10 =TRUE()
김남주 1988-07-04 사원 14000000 인사부 2000-01-01 =FALSE()
권현욱 1969-01-01 대리 40000000 경리부 1994-01-01 =FALSE()
주정민 1972-08-01 과장 50000000 영업부 1990-07-15 =TRUE()
최동진 1999-01-01 과장 45000000 총무부 2000-05-15 =FALSE()
권현욱 1969-01-01 대리 40000000 경리부 1994-01-01 =FALSE()

위와 같은 자료가 있다고 할 때 이름과 생년월일이 같은 사람, 그러니까 중복된 레코드만 아래와 같이 한번씩 나타나도록 하고 싶다면 어떻게 하면 될까요?

이름 생년월일 직급 연봉 부서 입사일 결혼여부
이순신 1968-01-01 사원 22000000 총무부 1995-01-01 =TRUE()
김유신 1969-01-01 부장 55000000 영업부 1988-07-01 =TRUE()
권현욱 1969-01-01 대리 40000000 경리부 1994-01-01 =FALSE()
주정민 1972-08-01 과장 50000000 영업부 1990-07-15 =TRUE()

해결하는 방법은 여러 가지가 있을 수 있습니다. 속 편하게 VBA를 사용할 수도 있고 (대신 머리는 좀 아프겠지만...) 복잡한 함수를 사용할 수도 있겠습니다. 하지만 다들 알고 계시는 고급 필터를 사용하면 힘 하나 안들이고 해결할 수 있습니다.

(1) 먼저, 고급 필터에서 Criteria(필터링할 기준)를 작성합니다. 이 때 주의할 점! 고급 필터의 Criteria를 작성할 때에는 대개의 경우 데이터 테이블의 Header 부분을 그대로 복사하여 사용하는 것이 좋다고 예전에 설명을 드렸지요? 그런데 이번 경우에는 데이터 테이블의 필드명과 Criteria의 필드명을 반드시 다른 이름으로 지정해 주어야 합니다.

존함 탄신일 직급 연봉 부서 입사일 결혼여부

(2) 이름과 생년월일이 같은 데이터만 추출하기 위해서 아래와 같이 조건을 줍니다.

존함 탄신일 직급 연봉 부서 입사일 결혼여부
=COUNTIF($B$17:$B$31,B17)>1 =COUNTIF($C$17:$C$31,C17)>1

(3) '데이터-필터-고급 필터' 메뉴를 선택한 다음 아래와 같이 각 항목을 지정합니다.

중복된 행만 추출하기 예제 화면 1
아이엑셀러

(4) 두 번 이상 반복되는 레코드들만 추출됩니다.

이름 생년월일 직급 연봉 부서 입사일 결혼여부
이순신 1968-01-01 사원 22000000 총무부 1995-01-01 =TRUE()
김유신 1969-01-01 부장 55000000 영업부 1988-07-01 =TRUE()
권현욱 1969-01-01 대리 40000000 경리부 1994-01-01 =FALSE()
주정민 1972-08-01 과장 50000000 영업부 1990-07-15 =TRUE()

혹시 이 방법보다 더 간단한 방법을 아시는 분은 연락주시기 바랍니다.

6월하고도 5일 이군요. 개인적인 사정으로 인해 Exceller의 개인 메일로 질문을 주신 분들께는 답변을 거의 못드리고 있습니다. Exceller의 본업이 'Q&A 답변'이 아니니만큼 너른 마음으로 양해하시기 바랍니다.

그리고 질문 메일을 보내실 때에는 본문에도 질문하시는 분의 메일 주소를 꼭 기재해 주시기 바랍니다.

오늘은 여기까지...

정리 — 중복된 행만 추출하기

구분내용
도구고급 필터 (데이터 - 필터 - 고급 필터)
조건 범위 필드명원본 데이터의 필드명과 반드시 다르게 작성 (예: 이름을 존함, 생년월일을 탄신일)
조건=COUNTIF($B$17:$B$31,B17)>1 과 =COUNTIF($C$17:$C$31,C17)>1
결과이름과 생년월일이 같은 중복 레코드가 한 번씩만 추출됨

자주 묻는 질문 (FAQ)

Q1. 중복된 레코드만 추출하려면 어떻게 하나요?

고급 필터의 조건 범위에 COUNTIF 함수를 이용한 수식 조건을 입력해 이름과 생년월일이 두 번 이상 나타나는 행만 추출합니다.

Q2. 조건 범위의 필드명을 왜 다르게 해야 하나요?

수식을 조건으로 사용할 때는 원본 데이터의 필드명과 겹치지 않는 이름을 써야 하기 때문입니다. 그래서 이 강좌에서는 존함과 탄신일이라는 이름을 사용했습니다.

Q3. 중복 레코드가 여러 번 나오지 않나요?

아닙니다. 두 번 이상 반복되는 레코드가 한 번씩만 추출됩니다.

마치며

고급 필터에 수식 조건을 활용하면 VBA 없이도 중복 데이터를 간단히 걸러낼 수 있습니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.