엑셀 VBA 동일한 글자색 셀 개수 구하는 방법

엑셀(Excel)/VBA

엑셀 VBA 동일한 글자색 셀 개수 구하는 방법

 

환경: Microsoft Excel 20103

 

엑셀에서 셀에 들어간 데이터 중 동일한 글자색의 개수가 몇 개인지 어떻게 알아낼 수 있을까요? 기존에 제공하는 함수를 아무리 쥐어짜도 알아낼 수 없습니다. VBA 로 함수를 만들어서 구할 수 밖에 없습니다. 오늘은 VBA 코드로 사용자 정의 함수를 만들어 색깔이 같은 데이터가 몇 개인지 알아내 보겠습니다.

 

▼ 특정 영역에서 동일한 글자색의 데이터가 몇 개나 있는지 파악하기 위해서는 사용자정의 함수를 만들어야 합니다. 샘플 데이터에서 빨간색과 검은색 글자의 개수를 구할 것입니다.

엑셀 VBA 동일한 글자색 셀 개수 구하는 방법

 

▼ 함수 제작을 위해서 [개발도구] > [Visual Basic] 리본 메뉴를 클릭합니다. 그리고 Visual Basic Editor 창을 띄웁니다.  

엑셀 VBA 동일한 글자색 셀 개수 구하는 방법

 


VBA 편집창이 뜨면 왼쪽 탐색기에서 Module1 을 선택합니다. 만약 Module1 가 없다면 오른쪽 마우스를 눌러 [삽입] > [모듈] 메뉴를 선택합니다

엑셀 VBA 동일한 글자색 셀 개수 구하는 방법

 

▼ 모듈을 선택하고 오른쪽 편집화면으로 가서 함수를 작성합니다. 주의할 것은 사용자 정의 함수를 만들려면 함수명 앞에 Function 을 붙여야합니다

엑셀 VBA 동일한 글자색 셀 개수 구하는 방법

 

▼ 함수에 들어가는 소스를 설명하겠습니다. 인수는 2개입니다. 첫 번째 인수는 구분할 폰트 색상이 들어가 있는 셀 주소입니다. 셀 안에 들어가 있는 색상값을 추출해서 쓰기 위해서 입니다. 두 번째 인수는 계산할 데이터가 있는 영역입니다. 이렇게 두 개의 인수 값이 들어오면 Font.Color 로 글자의 색상 값을 가져와 셀에 있는 폰트값을 하나씩 비교합니다. 만약 동일한 색상이라면 숫자를 증가시켜 함수명인 CountColor 변수에 저장합니다.

 

Function CountColor(range_data As Range, criteria As Range)

    Dim datax As Range

    Dim xcolor As Long

 

    xcolor = range_data.Font.Color

    For Each datax In criteria

        If xcolor = datax.Font.Color Then

            CountColor = CountColor + 1

        End If

    Next datax

End Function

 

▼ 함수 작업이 끝나면 Visual Basic Editor 창을 닫고 워크시트로 돌아갑니다. 이제 함수를 찾아서 계산을 해 보겠습니다. fx 를 눌러 함수 마법사를 띄웁니다. 범주 선택을 사용자 정의로 바꾸면 직접 만든 함수들을 볼 수 있습니다. CountColor 함수를 선택합니다

엑셀 VBA 동일한 글자색 셀 개수 구하는 방법

 

▼ 사용자 정의 함수 CountColor 의 첫 번째 인수로 빨간색 글자가 있는 셀 주소를 선택합니다. 그리고 두 번째 인수로 계산할 영역을 드래그해서 넣습니다.

엑셀 VBA 동일한 글자색 셀 개수 구하는 방법

 

▼ 아래는 동일한 색상값이 있는 글자의 개수를 구하기 위해 CountColor 를 적용한 결과 입니다. 빨간색은 2, 검은색은 3개가 나왔네요. 이상으로 셀 영역에서 동일한 색상이 있는 글자 개수를 구하기 위해 VBA 를 이용해서 사용자 정의 함수를 만들어 보았습니다.

엑셀 VBA 동일한 글자색 셀 개수 구하는 방법

Posted by 녹두장군