본문 바로가기
업무 자동화

엑셀 VBA: 두 데이터 비교해서 다른 값 자동으로 찾기 (차이점 색칠 매크로)

by jungdabnote 2026. 1. 30.
반응형

직장인들이 월말마다 가장 괴로워하는 작업 중 하나가
바로 데이터 대사(Cross-check) 입니다.

  • “국세청 자료랑 우리 회계 자료랑 왜 금액이 다르지?”
  • “지난달 명단이랑 이번 달 명단에서 빠진 사람은 누구야?”

이럴 때 보통은
두 개의 열을 나란히 놓고
눈으로 하나씩 내려가며 비교하게 됩니다.

문제는
행이 몇 백, 몇 천 개만 돼도
사람 눈은 반드시 실수한다는 것입니다.

 

그래서 이번에는
두 개의 데이터 목록을 자동으로 비교해서,
서로 다른 값만 빨간색으로 표시해 주는 VBA 매크로
를 정리해봤습니다.

말 그대로
틀린 그림 찾기는 이제 엑셀에게 맡기는 용도입니다.


이런 상황에서 특히 많이 씁니다

실무에서 아주 자주 나옵니다.

  • 발주 리스트 vs 입고 리스트
    → 누락된 항목 확인
  • 시스템 데이터 vs 수기 정리 엑셀
    → 금액 / 코드 오류 검증
  • 지난달 명단 vs 이번 달 명단
    → 추가·삭제된 인원 확인

엑셀 함수로도 할 수는 있지만,
매번 수식 걸고 지우는 것도 은근히 번거롭습니다.

이 매크로는
👉 범위만 찍어주면 바로 결과가 보이는 방식이라 편합니다.


이 매크로는 이렇게 동작합니다

동작 방식은 단순합니다.

  1. 기준이 되는 첫 번째 열 선택
  2. 비교할 두 번째 열 선택
  3. 두 범위를 서로 비교해서
    • 한쪽에만 있는 값은
    • 해당 셀을 빨간색으로 표시

양쪽 모두 검사하기 때문에
어느 쪽에만 있는 데이터인지 한눈에 보입니다.


VBA 매크로 사용 방법

  1. 엑셀에서 Alt + F11 → VBA 편집기 실행
  2. 상단 메뉴 [삽입] → [모듈] 클릭
  3. 아래 코드 그대로 복사해서 붙여넣기
  4. 엑셀로 돌아와 Alt + F8 → CompareTwoLists 실행
  5. 안내에 따라 두 범위를 차례대로 선택

두 데이터 비교 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가지만 잘 활용해도
엑셀로 하는 단순 반복 작업의 상당 부분은 자동화할 수 있습니다.

 

엑셀은
“손으로 열심히 하는 도구”가 아니라
“사람 대신 반복 작업을 시키는 도구”입니다.

그동안 따라오시느라 고생 많으셨고,
이 글들이 여러분의 칼퇴에 조금이라도 도움이 됐으면 좋겠습니다. 감사합니다!

반응형