엑셀 VBA 셀의 음영색 개수세기
본문 바로가기
엑셀 컴퓨터 인터넷/엑셀 VBA

엑셀 VBA 셀의 음영색 개수세기

by 대충살아볼까 2024. 8. 16.

회사 업무를 하다가 셀의 색깔별로 개수를 세어야 할 일이 생겼습니다.

 

매주 해야 되는 업무이기에 천성이 게으른 저로서는 노가다를 하기 싫어서 간단하게 VBA 코드를 만들었습니다.

 

목  차

1. sub

2. 샐깔코드 알아내기

3. 반복문을 써서 셀의 숫자가 적힌 셀까지 반복하기

4. select case문으로 해당되는 셀의 개수세기

  - (코딩 필요없이) VBA모듈파일 다운로드 제공

 

 

포스트를 작하기 전에

 

VBA 코딩을 하시다 보면 오류처리와 디버깅 때문에 어려움을 겪습니다.

 

오류처리디버깅쉽게 할 수 있는 방법이 있다는 것을 알고 계시나요?

 

자세한 내용은 아래 포스트를 참고하세요.

 

https://dotsnlines.tistory.com/1085

 

VBA 오류 처리 방법 및 디버깅(효율적인 오류처리와 오류제외)

VBA로 프로그래밍을 하다보면 코드가 원하는 대로 작동하지 않을 때가 있습니다. 이럴 때 효과적인 디버깅과 오류 처리 기술을 사용하여 문제를 해결할 수 있습니다. 이번 포스트에서는 VBA 디버

dotsnlines.tistory.com

 


 

 

우선 위의 그림과 같이 색깔별로 셀 개수를 카운트 할 부분(C1:D3)을 만들고, 임의로 셀에 음영색을 넣은 영역(C6:C16)을 만들었습니다.

 

11개의 셀 중에서 노란색, 오렌지색, 녹색의 개수를 세는 VBA 코드를 만들어 보겠습니다.

 

 

Sub sbColor()

Dim Y As Integer '노란색 음영개수
Dim O As Integer '오랜지색 음영개수
Dim G As Integer '녹색색 음영개수

Dim C As Integer

Y = 0
O = 0
G = 0

C = 6
Do While Cells(C, 2) <> ""
    
    Select Case Cells(C, 3).Interior.ColorIndex
        Case 6
            Y = Y + 1
        Case 44
            O = O + 1
        Case 43
            G = G + 1
    End Select

    C = C + 1
Loop

Cells(1, 4) = Y
Cells(2, 4) = O
Cells(3, 4) = G

End Sub

 

코드가 예쁘게 표시되지 않네요. " ' " 표시된 부분은 VBA에서 주석인건 아시죠? 

 

맨 아래에 코드를 첨부하고 사용법도 알려드리니 다운로드 받으시고 활용해 보세요.

 


 

우선  코드에 대해서 간단하게 설명드릴게요.

 

1. sub

VBA에서는 코드를 작성할 때 "sub"와 "end sub" 이 사이에 실행 코드를 작성해야 합니다.

 

이렇게 "sub  ~ end sub"로 작성된 코드 묶음을 모듈이라고 합니다. 이걸 포스트 맨 아래에서 다운받아 사용하심 됩니다.

 

모듈이 많으면 헬갈리니깐 모듈 이름을 정하는데 저는  "sbColor"라고 적었어요. 

 

 

dim은 변수를 지정하는 함수인데, Basic이라는 언어가 워낙 옛날에 나와서 그런지 데이터를 효율적으로 사용하기 위해 이렇게 일일이 변수 지정을 다 해줘야 됩답니다. 'integer'는 정수를 담겠다는 뜻이에요.

 

2. 샐깔코드 알아내기

우선 셀별로 색깔코드를 알아야지 써먹을 수 있겠죠.

직접 실행창에 이렇게 컬러인덱스를 물어보니깐 친절히 알려주네요.

 

6은 노란색, 44는 오렌지색, 43은 녹색입니다.

 

 

3.  반복문을 써서 셀의 숫자가 적힌 셀까지 반복하기

반복문 중 while을 사용했어요. 이게 for문을 사용하는 것보다 코드 줄이 줄어들잖아요.

C = 6
Do While Cells(C, 2) <> ""

    C = C + 1
Loop

 

숫자셀이 시작하는 셀의 행이 6이니깐 6부터 시작해서 하나씩 증가(C=C+1)하도록 만들었어요.

 

 

4. select case문으로 해당되는 셀의 개수세기

Y = 0
O = 0
G = 0

C = 6
Do While Cells(C, 2) <> ""
    
    Select Case Cells(C, 3).Interior.ColorIndex
        Case 6
            Y = Y + 1
        Case 44
            O = O + 1
        Case 43
            G = G + 1
    End Select

    C = C + 1
Loop

 

우선 변수 Y, O, G는 0으로 초기화 했습니다. 그래야 개수가 제대로 세어지죠.

 

(C,3)에 해당되는 셀의 컬러인덱스가 6, 44, 43일 경우에 각각 개수를 1씩 증가시키도록 했습니다.

 

Cells(1, 4) = Y
Cells(2, 4) = O
Cells(3, 4) = G

그리고 반복문이 완료되면 개수를 표시하였습니다.

 

 

실행을 하니깐 결과가 제대로 나오네요.

 


 

countColorCell.bas
0.00MB

 

모듈은 위의 파일을 다운받으셔서 사용하시면 됩니다.

 

사용방법은 

 

엑셀 맨위에 있는 리본메뉴에서 왼쪽에 '파일'을 누르시고 -> 왼쪽 맨 아래에 '옵션을 눌러줍니다.'

엑셀 옵션에서 오른쪽에 '개발 도구'를 체크하시고 확인을 누르시면 됩니다.

 

 

그러면 개발도구 탭이 생긴게 보이시죠?

 

여기에서 맨 왼쪽에 'Visual Basic'을 누른다음 

 

왼쪽 메뉴에서 마우스커서를 갖다대고 마우스 오른쪽 버튼을 클릭하면 됩니다.

 

그러면 '파일 가져오기(I)...' 이 보이시죠? 이걸 누르고 파일을 가져와서 사용하시면 됩니다.

728x90

댓글