본문 바로가기
정리

눈으로 세지 마세요! 엑셀 색깔별 합계, VBA 코드로 자동화하는 법

by 빅스토어4랑 2025. 7. 22.
728x90
반응형

 

엑셀에서 특정 서식의 셀만 골라 합계 구하기? 눈으로 보고 일일이 더하셨나요? 이제 VBA 코드를 활용해 노란색 바탕에 검은색 글씨인 셀들의 합계를 자동으로 계산하는 마법 같은 방법을 알려드릴게요! 이 글을 통해 엑셀 작업 효율을 확 높여보세요.

엑셀 작업을 하다 보면 이런 고민 한 번쯤 해보셨을 거예요. "아, 이 많은 숫자 중에 노란색으로 칠해진 셀들만 합계를 내야 하는데... 이걸 일일이 찾아서 더해야 하나?" 저도 예전에 그랬거든요. 눈 빠지게 셀 하나하나 클릭하며 더하다가 실수도 하고, 시간도 엄청 잡아먹고 말이죠. 😭

엑셀에 SUMIF나 SUMIFS 같은 함수가 있어서 조건에 맞는 셀의 합계를 구하는 건 쉬운데, '셀 색깔'이나 '글씨 색깔' 같은 서식 조건으로는 합계를 구할 수 없다는 사실, 알고 계셨나요? 정말 아쉽죠! 하지만 걱정 마세요. 오늘 제가 그 답을 알려드릴게요. 바로 엑셀의 숨겨진 능력, VBA(Visual Basic for Applications)를 활용하는 방법입니다! 😊

 

왜 엑셀 기본 기능으로는 안 될까요? 🤔

엑셀의 SUMIF 함수는 특정 '값'이나 '텍스트'를 조건으로 합계를 구하는 데 특화되어 있어요. 예를 들어, '500보다 큰 값'이라든지, '사과'라는 텍스트가 있는 셀의 합계를 구하는 건 아주 쉽죠. 하지만 셀의 배경색이나 글씨 색깔 같은 '서식' 정보는 함수가 직접 인식할 수 있는 조건이 아니랍니다.

엑셀은 데이터 자체를 처리하는 데 중점을 두기 때문에, 시각적인 서식은 데이터의 일부로 간주하지 않는 거죠. 그래서 우리는 엑셀이 서식을 '데이터'처럼 인식하고 처리할 수 있도록 새로운 규칙(코드)을 만들어줘야 합니다. 그 역할을 하는 것이 바로 VBA예요!

VBA 코드로 해결하기: 나만의 함수 만들기 💡

VBA는 엑셀의 작업을 자동화하거나 새로운 기능을 추가할 수 있게 해주는 프로그래밍 언어예요. 어렵게 생각할 필요 없어요! 우리가 필요한 건 딱 하나의 '사용자 정의 함수'를 만드는 거니까요. 아래 코드를 그대로 따라 하시면 됩니다.

💡 알아두세요!
VBA 편집기는 Alt + F11 단축키로 쉽게 열 수 있어요. 개발 도구 탭이 보이지 않는다면, 엑셀 옵션에서 '리본 사용자 지정'으로 들어가 '개발 도구'를 체크해 활성화할 수 있습니다.

자, 이제 VBA 편집기를 열고 다음 코드를 '모듈'에 붙여넣어 볼까요?

 

VBA 코드 예시 📝

노란색 배경, 검은색 글씨 셀의 합계를 구하는 함수:

Function SumByColor(SumRange As Range, ColorCell As Range) As Double
    Dim Cell As Range
    Dim SumValue As Double
    Dim TargetBackColor As Long
    Dim TargetFontColor As Long

    ' 기준 셀의 배경색과 글씨색을 가져옵니다.
    TargetBackColor = ColorCell.Interior.Color
    TargetFontColor = ColorCell.Font.Color

    SumValue = 0

    ' 범위 내의 각 셀을 검사합니다.
    For Each Cell In SumRange
        ' 셀의 배경색과 글씨색이 기준 셀과 같은지 확인합니다.
        If Cell.Interior.Color = TargetBackColor And Cell.Font.Color = TargetFontColor Then
            ' 숫자인 경우에만 합산합니다.
            If IsNumeric(Cell.Value) Then
                SumValue = SumValue + Cell.Value
            End If
        End If
    Next Cell

    SumByColor = SumValue
End Function
        

* 이 코드는 `SumByColor`라는 사용자 정의 함수를 만듭니다.

VBA 함수 사용법: 직접 적용해볼까요? 📝

코드를 모듈에 붙여넣고 VBA 편집기를 닫으면, 이제 엑셀 워크시트에서 이 함수를 사용할 수 있어요. 마치 SUM 함수처럼 말이죠!

  1. 1. 기준 셀 준비: 먼저, 합계를 구하고 싶은 서식(노란색 배경, 검은색 글씨)을 가진 아무 셀이나 하나 선택하세요. 이 셀이 우리가 찾을 서식의 '기준'이 됩니다. 예를 들어, A1 셀이 노란색 바탕에 검은색 글씨라면 A1을 기준 셀로 사용할 수 있어요.
  2. 2. 함수 입력: 합계 결과를 표시하고 싶은 셀에 다음 함수를 입력합니다.
    =SumByColor(합계를 구할 범위, 기준 셀)
    예시: A1:A10 범위에서 노란색 바탕, 검은색 글씨 셀의 합계를 구하고 싶고, B1 셀이 노란색 바탕에 검은색 글씨라면, 다음과 같이 입력합니다.=SumByColor(A1:A10, B1)
  3. 3. 결과 확인: 엔터를 누르면, 지정한 범위에서 노란색 바탕에 검은색 글씨인 셀들의 합계가 짜잔! 하고 나타날 거예요. 정말 신기하죠? 😊

알아두면 유용한 팁! 📌

  • 매크로 포함 통합 문서로 저장하기: VBA 코드를 사용한 엑셀 파일은 반드시 '.xlsm' 확장자로 저장해야 해요. 그냥 '.xlsx'로 저장하면 코드가 사라질 수 있으니 꼭 주의하세요!
  • 서식 변경 시 새로고침: 셀의 서식(색깔)을 변경해도 함수 결과가 바로 바뀌지 않을 수 있어요. 이럴 땐 F9 키를 눌러 수동으로 계산하거나, 셀 내용을 한 번 수정(예: 스페이스바 입력 후 삭제)하면 업데이트됩니다.
  • 다른 서식에도 적용 가능: 이 함수는 노란색 배경, 검은색 글씨뿐만 아니라 어떤 배경색과 글씨색 조합에도 적용할 수 있어요. 기준 셀의 서식만 바꿔주면 되니 활용도가 정말 높겠죠?
  • 조건부 서식과의 차이: 조건부 서식으로 적용된 색깔은 VBA가 직접 인식하기 어려울 수 있습니다. 이 코드는 수동으로 적용된 서식에 더 적합해요.
 
💡

엑셀 서식별 합계, 핵심 요약!

엑셀의 한계: 기본 함수로는 서식(색깔)을 조건으로 합계 불가!
해결책은 VBA: 사용자 정의 함수로 나만의 계산 기능 추가!
핵심 VBA 함수:
Function SumByColor(SumRange As Range, ColorCell As Range)
활용 팁: '.xlsm'으로 저장, F9로 새로고침, 다양한 서식에 적용 가능!

자주 묻는 질문 ❓

Q: VBA 코드를 붙여넣었는데 작동을 안 해요!
A: 다음을 확인해보세요.
  • 👉 VBA 편집기에서 '삽입' > '모듈'을 클릭한 후 코드를 붙여넣었는지 확인하세요.
  • 👉 파일을 '.xlsm' (매크로 사용 통합 문서) 형식으로 저장했는지 확인하세요.
  • 👉 엑셀 보안 설정에서 매크로를 사용하도록 설정되어 있는지 확인하세요. (파일 > 옵션 > 보안 센터 > 보안 센터 설정 > 매크로 설정)
Q: 노란색 배경이 아니라 다른 색깔 배경의 합계를 구하고 싶으면 어떻게 하죠?
A: 아주 간단해요! `SumByColor` 함수의 두 번째 인자인 '기준 셀'의 서식을 원하는 색깔로 바꿔주기만 하면 됩니다. 예를 들어, 파란색 배경의 셀 합계를 구하고 싶다면, 기준 셀을 파란색으로 칠하고 함수를 그대로 사용하면 돼요.
Q: 조건부 서식으로 색깔이 바뀐 셀도 합계를 구할 수 있나요?
A: 아쉽게도 이 VBA 코드는 수동으로 적용된 서식에만 반응합니다. 조건부 서식은 셀의 '값'에 따라 서식이 동적으로 변하기 때문에, VBA가 직접 서식을 인식하기 어렵습니다. 조건부 서식의 조건 자체를 활용하여 합계를 구하는 다른 VBA 코드를 사용해야 할 수 있습니다.

어떠셨나요? 엑셀에서 서식 조건으로 합계를 구하는 것이 불가능하다고 생각하셨다면, 이제 VBA라는 새로운 문을 여신 거예요! 처음에는 조금 어렵게 느껴질 수 있지만, 한 번 해보면 정말 유용하게 써먹을 수 있는 기능이랍니다. 이제 더 이상 눈으로 세지 말고, 엑셀에게 똑똑하게 일을 시켜보세요! 😊 더 궁금한 점이 있다면 언제든지 댓글로 물어봐주세요~

728x90
반응형