본문 바로가기
WeekdayLife/excel

[엑셀VBA] 색칠된 셀의 합계 구하기

by JO_i 2021. 4. 9.

색칠된 셀의 합계 구하기

특정 조건에 대하여 셀 색을 칠하는 것은 조건부 서식으로 되는데,

색이 칠해진 셀에 대하여, 합계를 구하는 방법이 묘연하다.

 

배열수식으로 간단하게 만들어질 줄 알았는데, VBA를 사용해야하는 것 같다.

없으면 만들어야지 뭐..

 

 

방법

다들 아는 것이겠지만, VBA 프로시저 중, 일반적으로 사용하는

SUB프로시저를 만들기엔 변수가 좀 많다.

FUNCTION 프로시저로 UDF를 만들어서 사용하는 게 나을 것 같다.

 

그래도 뭐가 나을지 모르니, 둘 다 해보자.

 

CASE #1. SUB 프로시저 사용

영역을 INPUTBOX로 받아서, 색상을 확인한다.

흰색이 아니면, 값을 저장해서, 이후에 해당하는 값을 합산한다.

모든 영역에 검사가 끝나면, 최종적으로 합산된 값을 반환한다.

 

그런데.. 어디다가 반환할 것인가?

셀을 지정해주거나, 현재 셀로 해도 되지만, 뭐.. 일단 아무데나..

 

작성된 코드는 아래와 같다.

흰색 셀 색상 코드를 확인해서 넣어주는 것이 키포인트

 

 

CASE #2. FUNCTION 프로시저 사용

함수의 인수로 영역을 넣어준다.

나머지 과정은 위와 동일하고, 함수이니, 현재 셀에 반환이 된다.

 

그런데.. 색상값을 변경해도, 값이 변하지 않기 때문에, 함수가 재계산되지 않는다.

그냥 F9를 누르지.. 머..

 

작성된 코드는 아래와 같다.

 

 

결론

둘다 불편한 점을 가지고 있다.

깊게 고민하지 않아서 코드는 허접하지만,

동작은 하니.. 여기까지.