엑셀에서 빨간색이나 노란색 등 셀에 칠해진 특정 색상의 개수를 자동으로 세어 등급(A~F)을 판정하고 싶으신가요. 기본 함수로는 불가능한 '색상 조건별 값 추출'을 VBA 사용자 정의 함수(CheckColor)로 1초 만에 구현하는 실무 자동화 치트키를 대공개합니다.
1. 엑셀에 없는 함수를 창조하다: VBA 사용자 정의 함수와 모듈 삽입
이번에 사용할 기술은 엑셀이 내장하고 있지 않은 `=CheckColor(범위)`라는 새로운 연산 공식을 소스코드로 빌드업하는 과정입니다. 복잡한 코딩을 몰라도, 엑셀의 백엔드 편집창에 복사해서 붙여넣기만 하면 되므로 차근차근 따라오시면 됩니다.
- 1단계 (개발 도구 활성화): 상단 메뉴 탭에 [개발 도구]가 보이지 않는다면, 리본 메뉴 빈 곳을 마우스 우클릭한 뒤 [리본 메뉴 사용자 지정]으로 들어가 우측의 [개발 도구] 체크박스를 켜고 [확인]을 눌러줍니다.
- 2단계 (비주얼 베이직 실행): [개발 도구] 탭에서 맨 왼쪽에 있는 [Visual Basic] 아이콘을 클릭합니다. (단축키
[Alt + F11]을 누르면 동선이 훨씬 간결해집니다.) - 3단계 (새 모듈 개설): 하얀 소스코드 입력창을 띄우기 위해, 비주얼 베이직 창 상단 메뉴에서 [삽입] ──> [모듈(M)]을 콕 선택해 줍니다.
화면에 깨끗한 메모장 형태의 '모듈 1' 창이 열리면, 준비된 아래의 사용자 정의 함수 마스터 소스코드를 그대로 복사(Ctrl+C)하여 붙여넣기(Ctrl+V) 해줍니다.
Function CheckColor(Rng As Range) As String
Dim cell As Range
Dim count As Long
count = 0
For Each cell In Rng
' 각 셀의 배경색을 검사 (3번은 빨간색 코드)
If cell.Interior.ColorIndex = 3 Then
count = count + 1
End If
Next cell
' 색상 개수에 따른 동적 결과 값 매칭 매커니즘
If count = 1 Then
CheckColor = "A"
ElseIf count = 2 Then
CheckColor = "B"
ElseIf count = 3 Then
CheckColor = "C"
ElseIf count = 4 Then
CheckColor = "D"
ElseIf count = 5 Then
CheckColor = "E"
ElseIf count = 6 Then
CheckColor = "F"
Else
CheckColor = "등급 외"
End If
End Function
2. 내 입맛에 맞춘 변형 공식 분석: '색상 고유 번호'와 '추출 값' 제어 규칙
방금 이식한 코드는 사용자의 업무 성격에 따라 아주 유연하게 개조할 수 있도록 완벽한 모듈화 인터페이스를 가지고 있습니다. 실무 적용 시 딱 두 가지만 내 마음대로 수정해 주시면 됩니다.
- 색상 고유 코드 번호 (`ColorIndex`) 변경:
코드 7번째 줄의ColorIndex = 3부분에서 숫자 '3'은 엑셀 내부 달력과 시스템이 인식하는 빨간색의 고유 코드입니다. 만약 우리 회사는 빨간색이 아니라 다른 색을 기준으로 카운트해야 한다면 이 숫자만 스위칭해 주면 됩니다. 주로 쓰이는 실무 색상 표는 다음과 같습니다.
예를 들어, 노란색 음영의 개수를 세고 싶다면 코드를1 2 3 4 5 6 검정색 흰색 빨간색 연두색 파란색 노란색 ColorIndex = 6으로 수정하고 저장하시면 됩니다. 노란색 기반으로 바꿀 경우 빨간색 음영은 투명 인간 취급하여 카운트에서 완전히 제외됩니다. - 개수별 판정 결과 커스텀 (`ElseIf` 구문):
코드 하단의count = 1 Then CheckColor = "A"영역의 숫자와 알파벳 문자열을 편집하면 매칭 결과가 실시간 동기화됩니다. 개수가 1개일 때 알파벳 대신 한글 "가"를 내보내고 싶다면"A"를"가"로 고쳐 쓰시면 됩니다. 만약 조건 단계를 더 늘려 7개, 8개까지 확장하고 싶다면ElseIf count = 2 Then ...라인을 통째로 복사해서 바로 밑 줄에 붙여넣고 숫자만 밀어 올려주시면 무한대로 레이어가 빌드업됩니다.
세팅이 끝났다면 저장 단축키인 [Ctrl + S]를 누른 뒤 비주얼 베이직 창을 닫고 시트로 돌아옵니다. 위에있는 양식 그대로만 하시면 되니 헷갈릴일은 없으실겁니다. 저 처럼 따로 메모장에 복사를 해서 사용을 하셔도 됩니다.
3. 실전 적용 및 매크로 통합 문서(`.xlsm`) 필수 보존 규칙
이제 엑셀 시트로 돌아와 빈 셀에 일반 내장 함수를 쓰듯 똑같이 =CheckColor(A1:A10)를 입력하고 엔터를 탁 쳐보세요! 지정한 범위 내에 빨간색 셀이 1개 있으면 화면에 'A', 3개 있으면 'C'가 마술처럼 자동 연산되어 출력되는 경이로운 모습을 보실 수 있습니다.
⚠️ 여기서 꼭 기억해야 할 실무 주의사항 2가지!
첫째, 엑셀 시스템의 기본 연산 메커니즘상 단순히 셀에 색칠을 하거나 채우기를 지우는 행위는 데이터 입력으로 간주되지 않아 값이 실시간으로 즉시 변하지 않을 수 있습니다. 색상을 바꾼 뒤 결과를 새로고침 하고 싶을 때는, 함수가 입력된 셀을 클릭하고 키보드 [F2] 키를 누른 뒤 엔터(Enter)를 다시 한번 쳐주거나 단축키 [F9](재계산)를 눌러주면 주소를 다시 스캔하여 완벽한 실시간 수치로 리프레시됩니다.
둘째, 이 강력한 특수 함수를 파일에 영구 박제하여 다른 팀원들과 공유하려면 일반 통합 문서로 저장하면 안 됩니다. 반드시 저장 단축키 [F12] 키를 누른 후, 파일 형식 드롭다운 메뉴에서 [Excel 매크로 사용 통합 문서 (*.xlsm)] 포맷을 명확하게 선택하여 압축 저장해야만 코드가 깨지거나 증발하는 에러 없이 내일 출근해서도 자동화 대시보드를 그대로 구동하실 수 있습니다.
외부에서 넘어온 대규모 품질 검사 서식이나 자재 등급 분류표를 정제할 때, 엑셀의 숨겨진 프로그래밍 엔진을 활용해 나만의 전용 도구를 만드는 실무자는 단순 반복 작업에 내 아까운 집중력을 절대 소모하지 않습니다. 오늘 원리부터 완벽하게 마스터한 [VBA 사용자 정의 함수 CheckColor 공식]을 기억해 두셨다가, 내일 출근하셔서 팀 내 마스터 대장에 즉시 이식해 보세요. 남들 화면 째려보며 셀 색깔 손가락으로 세느라 모니터 앞에서 눈시울을 붉히며 야근할 때, 여러분은 마우스 드래그 한 방으로 우아하게 등급 판정을 끝내고 누구보다 가볍고 빠르게 칼퇴하시길 진심으로 응원하겠습니다.