본문 바로가기
직장인 꿀팁 모음

엑셀 대량 데이터를 월별 중복 제거하는 방법

by suukii 2025. 4. 7.
728x90

📊 엑셀 대량데이터를 월별 중복 제거하는 방법 총정리

업무 중 고객 데이터, 매출 기록, 접속 로그 등 대량 데이터를 다룰 때 “월별로 중복된 항목을 제거”해야 할 일이 많습니다. 단순한 중복 제거가 아니라 월 기준으로 그룹핑 후 각 그룹 내에서 중복 제거하는 것이 핵심입니다.

이번 포스팅에서는 초보자도 쉽게 따라 할 수 있도록 단계별로 정리해보았습니다.


✅ 예시 데이터 구성

날짜 고객명 상품명

2024-01-05 김영희 A상품
2024-01-15 김영희 A상품
2024-02-01 이철수 B상품
2024-02-10 김영희 A상품

1️⃣ [도움말] 날짜를 ‘월’ 단위로 변환하기

먼저 날짜를 월별로 분류할 수 있도록 추가 열을 만들어야 합니다.

📌 함수 사용

=TEXT(A2, "yyyy-mm")

날짜 고객명 상품명 월

2024-01-05 김영희 A상품 2024-01
2024-01-15 김영희 A상품 2024-01

2️⃣ 고급 필터로 월별 중복 제거하기 (엑셀 기본 기능)

🪄 방법:

  1. 월, 고객명, 상품명 열 복사 → 새로운 영역에 붙여넣기
  2. [데이터] → [고급 필터]
    • ‘지정한 범위에서 고유한 레코드만’ 체크
    • → 중복 제거된 결과 출력

장점: 직관적이며 필터링 기준 자유 설정
단점: 데이터 많을수록 수동 작업이 반복됨


3️⃣ 피벗 테이블로 월별 고유값 보기

⏳ 빠르게 집계하려면:

  1. [삽입] → [피벗 테이블]
  2. 행: 월, 고객명
  3. 값: 상품명 (개수 또는 고유값)

장점: 중복 제거된 형태로 집계 가능
단점: 데이터를 추출하는 데 한계가 있음


4️⃣ 고급 사용자용: VBA 매크로로 월별 중복 제거 자동화

Sub 월별중복제거()
    Dim 데이터 As Range
    Dim 셀 As Range
    Dim sht As Worksheet
    Dim 고유값 As Object
    Dim 월 As String
    Dim 결과행 As Long
    
    Set sht = ActiveSheet
    Set 데이터 = sht.Range("A2", sht.Cells(sht.Rows.Count, 1).End(xlUp))
    Set 고유값 = CreateObject("Scripting.Dictionary")
    결과행 = 2

    For Each 셀 In 데이터
        월 = Format(셀.Value, "yyyy-mm")
        키 = 월 & "_" & 셀.Offset(0, 1).Value & "_" & 셀.Offset(0, 2).Value

        If Not 고유값.exists(키) Then
            고유값.Add 키, True
            Cells(결과행, 6).Value = 월
            Cells(결과행, 7).Value = 셀.Offset(0, 1).Value
            Cells(결과행, 8).Value = 셀.Offset(0, 2).Value
            결과행 = 결과행 + 1
        End If
    Next 셀

    MsgBox "월별 중복 제거 완료!"
End Sub

💡 팁: 결과는 F2:H 영역에 정리됩니다.


🔎 또 다른 방법 알아보기!


✅ 1. Power Query (파워쿼리)로 월별 중복 제거

💡 엑셀 2016 이후 버전 기본 탑재 (데이터 탭에서 사용 가능)

📌 사용법 요약:

  1. 데이터 → 파워쿼리로 불러오기
  2. 날짜 열 → "년-월" 형식으로 변환 (Transform → Date → Month)
  3. 필요한 열 기준으로 중복 제거
    • 예: 고객명 + 월 + 상품명 조합
  4. 결과를 워크시트로 불러오기

장점:

  • 대용량도 빠르게 처리
  • 반복 작업 자동화 가능
  • 원본 데이터 변경 시 자동 갱신

✅ 2. 피벗 테이블에서 ‘고유 항목 수’ 보기

📌 사용법 요약:

  1. 날짜 → 행 필드에 추가 (년/월로 그룹화)
  2. 고객명 → 값 필드 → "개수" 또는 "고유 개수"로 설정
  3. 상품명 → 필요 시 열 필드로 추가

장점:

  • 요약 통계 보고용으로 빠름
  • 원본 손상 없이 시각화

✅ 3. 수식 + 고급 필터 조합 (VLOOKUP or UNIQUE)

📌 수식 조합 예시:

  1. 날짜 열을 기준으로 월을 계산
=TEXT(A2, "yyyy-mm")
  1. 고객명, 상품명, 월 조합을 하나의 키로 만들기
=B2 & "-" & C2 & "-" & D2
  1. 고급 필터에서 중복 제거: 키 열 기준

또는 Excel 365 이상이면 UNIQUE 함수도 가능:

=UNIQUE(FILTER(A2:D100, TEXT(A2:A100, "yyyy-mm")="2024-03"))

✅ 4. VBA 매크로를 통한 월별 그룹 내 중복 제거

만약 매달 반복되는 데이터가 있고 이를 자동화하고 싶다면, 아래와 같은 매크로를 활용할 수 있습니다.

Sub 월별중복자동제거()
    Dim dict As Object
    Dim i As Long, 마지막행 As Long
    Dim 월 As String, 키 As String
    Set dict = CreateObject("Scripting.Dictionary")

    마지막행 = Cells(Rows.Count, 1).End(xlUp).Row
    결과행 = 2

    For i = 2 To 마지막행
        월 = Format(Cells(i, 1).Value, "yyyy-mm")
        키 = 월 & "_" & Cells(i, 2).Value & "_" & Cells(i, 3).Value

        If Not dict.exists(키) Then
            dict.Add 키, True
            Cells(결과행, 6).Value = 월
            Cells(결과행, 7).Value = Cells(i, 2).Value
            Cells(결과행, 8).Value = Cells(i, 3).Value
            결과행 = 결과행 + 1
        End If
    Next i

    MsgBox "월별 중복 제거 완료!"
End Sub

🧠 어떤 방법이 가장 좋을까?

상황 추천 방법

한 번만 처리하고 끝낼 경우 고급 필터 or 피벗 테이블
매달 반복해서 사용해야 할 경우 Power Query or VBA 매크로
자동 갱신 + 시각화까지 필요 Power Query + 피벗 조합

 

728x90