반응형
직장인들이 월말마다 가장 괴로워하는 작업 중 하나가
바로 데이터 대사(Cross-check) 입니다.
- “국세청 자료랑 우리 회계 자료랑 왜 금액이 다르지?”
- “지난달 명단이랑 이번 달 명단에서 빠진 사람은 누구야?”
이럴 때 보통은
두 개의 열을 나란히 놓고
눈으로 하나씩 내려가며 비교하게 됩니다.
문제는
행이 몇 백, 몇 천 개만 돼도
사람 눈은 반드시 실수한다는 것입니다.
그래서 이번에는
두 개의 데이터 목록을 자동으로 비교해서,
서로 다른 값만 빨간색으로 표시해 주는 VBA 매크로를 정리해봤습니다.
말 그대로
틀린 그림 찾기는 이제 엑셀에게 맡기는 용도입니다.
이런 상황에서 특히 많이 씁니다
실무에서 아주 자주 나옵니다.
- 발주 리스트 vs 입고 리스트
→ 누락된 항목 확인 - 시스템 데이터 vs 수기 정리 엑셀
→ 금액 / 코드 오류 검증 - 지난달 명단 vs 이번 달 명단
→ 추가·삭제된 인원 확인
엑셀 함수로도 할 수는 있지만,
매번 수식 걸고 지우는 것도 은근히 번거롭습니다.
이 매크로는
👉 범위만 찍어주면 바로 결과가 보이는 방식이라 편합니다.
이 매크로는 이렇게 동작합니다
동작 방식은 단순합니다.
- 기준이 되는 첫 번째 열 선택
- 비교할 두 번째 열 선택
- 두 범위를 서로 비교해서
- 한쪽에만 있는 값은
- 해당 셀을 빨간색으로 표시
양쪽 모두 검사하기 때문에
어느 쪽에만 있는 데이터인지 한눈에 보입니다.
VBA 매크로 사용 방법
- 엑셀에서 Alt + F11 → VBA 편집기 실행
- 상단 메뉴 [삽입] → [모듈] 클릭
- 아래 코드 그대로 복사해서 붙여넣기
- 엑셀로 돌아와 Alt + F8 → CompareTwoLists 실행
- 안내에 따라 두 범위를 차례대로 선택
두 데이터 비교 VBA 전체 코드
Sub CompareTwoLists() Dim Rng1 As Range, Rng2 As Range Dim Cell1 As Range, Cell2 As Range Dim DiffCount As Long On Error Resume Next ' 기준 데이터 선택 Set Rng1 = Application.InputBox( _ "기준이 되는 첫 번째 범위를 선택하세요.", _ "범위 1 선택", Type:=8) If Rng1 Is Nothing Then Exit Sub ' 비교 데이터 선택 Set Rng2 = Application.InputBox( _ "비교할 두 번째 범위를 선택하세요.", _ "범위 2 선택", Type:=8) If Rng2 Is Nothing Then Exit Sub On Error GoTo 0 Application.ScreenUpdating = False ' 기존 색상 초기화 Rng1.Interior.ColorIndex = xlNone Rng2.Interior.ColorIndex = xlNone DiffCount = 0 ' 기준 범위에만 있는 값 표시 For Each Cell1 In Rng1 If Application.WorksheetFunction.CountIf(Rng2, Cell1.Value) = 0 Then Cell1.Interior.Color = vbRed DiffCount = DiffCount + 1 End If Next Cell1 ' 비교 범위에만 있는 값 표시 For Each Cell2 In Rng2 If Application.WorksheetFunction.CountIf(Rng1, Cell2.Value) = 0 Then Cell2.Interior.Color = vbRed DiffCount = DiffCount + 1 End If Next Cell2 Application.ScreenUpdating = True If DiffCount > 0 Then MsgBox "총 " & DiffCount & _ "개의 차이점을 빨간색으로 표시했습니다.", _ vbInformation, "비교 완료" Else MsgBox "두 데이터가 완전히 일치합니다.", _ vbInformation, "일치" End If End Sub
사용 전에 꼭 알아둘 점 (중요)
이 매크로는 값(Value)이 완전히 같은지를 기준으로 비교합니다.
그래서 이런 경우는
“다른 값”으로 인식됩니다.
- 공백 하나 차이
→ "ABC" 와 "ABC " - 숫자 vs 문자
→ 숫자 1 과 텍스트 "1"
실무에서는
👉 비교 전에 공백 제거 / 데이터 정리를 먼저 해두는 게 좋습니다.
(이전 편에 정리한 전처리 매크로랑 같이 쓰면 딱입니다)
마무리
이 글로
[직장인을 위한 엑셀 VBA 자동화 시리즈]
총 10편으로 마무리됐습니다.
- 파일 합치기 / 쪼개기
- PDF 변환 / 이름 변경
- 메일 발송 / 자동 백업
- 목차 생성 / 빈 행 삭제 / 차트 생성
- 그리고 오늘의 데이터 비교 매크로
이 10가지만 잘 활용해도
엑셀로 하는 단순 반복 작업의 상당 부분은 자동화할 수 있습니다.
엑셀은
“손으로 열심히 하는 도구”가 아니라
“사람 대신 반복 작업을 시키는 도구”입니다.
그동안 따라오시느라 고생 많으셨고,
이 글들이 여러분의 칼퇴에 조금이라도 도움이 됐으면 좋겠습니다. 감사합니다!
반응형
'업무 자동화' 카테고리의 다른 글
| 엑셀 VLOOKUP의 한계를 넘는 데이터 조회 자동화 (INDEX-MATCH 활용법) (0) | 2026.02.04 |
|---|---|
| 셀 크기에 맞춰 사진 자동으로 넣기 (이미지 대량 삽입 매크로) (0) | 2026.01.31 |
| 엑셀 VBA: 선택한 데이터로 차트(그래프) 자동 만들기 (보고서 시각화 매크로) (0) | 2026.01.29 |
| 엑셀 VBA: 데이터 중간에 있는 빈 줄 한 번에 삭제하기 (전처리 매크로) (0) | 2026.01.28 |
| 엑셀 VBA: 시트 목차 자동으로 만들기 (하이퍼링크 이동 메뉴) (0) | 2026.01.27 |