Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 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 녹두장군

댓글을 달아 주세요

  1. 2016.07.05 12:45  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  2. 본부 2018.03.14 16:58  댓글주소  수정/삭제  댓글쓰기

    엑셀 작업을 하면서 많은 도움을 받고 있습니다.
    한가지 응용해보고 싶은 것이 있어서 문의 드립니다.

    조건부서식에서 중복값을 찾는 과정에서 셀강조를 하면서
    셀에 색을 주는 작업을 자주합니다.
    색이 있는 셀을 카운트하고 싶을 때가 있는데요,

    폰트 카운트를 셀 색의 카운트로 응용해보고자 하는데,
    모율 함수의 어느 부분을 수정해야 하는지 궁금합니다.

    감사합니다.

    • Favicon of https://mainia.tistory.com 녹두장군 2018.03.14 20:34 신고  댓글주소  수정/삭제

      다음과 같이 바꿔 줍니다.
      1. range_data.Font.Color -> range_data.Interior.Color
      2. datax.Font.Color -> datax.Interior.Color

      그러니까 Font.Color 대신 Interior.Color 사용하면 됩니다.

  3. 본부 2018.03.16 17:08  댓글주소  수정/삭제  댓글쓰기

    내용을 알려주셔서 감사합니다.

    CountinteriorColor = CountinteriorColor + 1


    이 부분도 수정해서 잘 활용하게 되었습니다.
    감사합니다.

  4. 수학소년 2018.07.28 12:14  댓글주소  수정/삭제  댓글쓰기

    함수 만드는데 많은 도움이 되었습니다.

    데이터가 바꾸면 함수값도 알아서 저절로 바껴야 하잖아요.
    근데 셀색, 글자색에 함수 걸어놓고
    다른 색깔로 바꿨는데 저절로 바뀌진 않네요ㅠ
    꼭 다시 함수로 가서 엔터 쳐줘야 갱신이 돼요.

    색만 바꿔도 저절로 바뀌게 할 수 있는 방법이 있을까요?