Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 동일한 글자색 셀 개수 구하기

엑셀(Excel)/VBA

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

 

 

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

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

 

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

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

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 문자열 자르기, LEFT RIGHT 함수를 이용해 문자열 추출하기
엑셀 VBA 연산자 사용해서 String 문자열을 합치기
엑셀 VBA 문자열 글자 하나씩 추출하기
엑셀 VBA 주민번호, 이메일 문자열 잘라 내는 방법
엑셀(Excel) - 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 동일한 글자색 셀 개수 구하는 방법

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 문자열 자르기, LEFT RIGHT 함수를 이용해 문자열 추출하기
엑셀 VBA 연산자 사용해서 String 문자열을 합치기
엑셀 VBA 문자열 글자 하나씩 추출하기
엑셀 VBA 주민번호, 이메일 문자열 잘라 내는 방법
엑셀(Excel) - VBA 숫자를 문자로 변환하는 방법
Posted by 녹두장군1
,