본문 바로가기
공 부/컴퓨터공부

엑셀에서 배경색상이 같은 셀의 갯수 구하는 함수

by 맨도리쓰 2013. 10. 10.

엑셀의 countif는 범위내 같은 데이터가 들어있는 셀의 갯수를 구하는 함수이다.

=countif(구할범위, 구할 데이터가 들어있는 셀)


하지만 같은 배경색이 들어있는 셀의 갯수를 구하는 함수는 없다

그래서 모듈을 만들어 정의를 해야한다.

우선 Alt + F11을 누르면 VBA창이 뜬다.

여기에서 삽입-모듈을 누르고


Function TotalColor(ByVal 범위 As Range, 색상 As Range) As Long
 Dim rng As Range
 Dim ColorSum As Long
   Application.Volatile
 For Each rng In 범위
   If rng.Interior.ColorIndex = 색상.Interior.ColorIndex Then
     ColorSum = ColorSum + 1
    End If
  Next rng
 TotalColor = ColorSum
End Function


아래 내용을 복사해서 넣는다.

그리곤 창을 닫고 나가서 엑셀함수처럼 사용하면 된다

사용법은 =totalcolor(구할범위, 구할 배경색이 들어있는 셀)

* 주의점 : 위 함수(매크로)를 포함하도록 저장해야 다른 곳에서도 사용하능하다. 

 "다른 이름으로 저장"에서 파일형식을 "excel 통합문서"가 아니라 "excel 매크로포함통합문서" 로 저장을 해야 한다.

또한, window7의 경우 ms오피스 문양-엑셀옵션-보안센터-보안센터설정-매크로설정-등급가장낮게와  VBA개체설정.... 에 체크(v)해야합니다. 그래야 매번 실행이 됩니다.



참고용..

아래 함수는 범위내의 원하는 배경색상이 들어있는 셀의 데이터합을 구하는 함수이다.

사용법은 =sumcolor(구할범위, 구할 배경색이 들어있는 셀)

Function SumColor(ByVal 범위 As Range, 색상 As Range) As Long
 Dim rng As Range
 Dim ColorSum As Long
   Application.Volatile
 For Each rng In 범위
   If rng.Interior.ColorIndex = 색상.Interior.ColorIndex Then
     ColorSum = ColorSum + rng
    End If
  Next rng
 SumColor = ColorSum
End Function