출석부를 관리하다 보면 "결석이 3회 이상인 학생 수"나 "이번 달 지각 횟수"처럼 특정 조건을 만족하는 항목이 '몇 개'인지 세야 하는 순간이 자주 온다. 앞선 글에서 다룬 SUMIF가 조건에 맞는 값들을 '더하는' 함수였다면, 이번에 다룰 COUNTIF는 조건에 맞는 항목이 '몇 개'인지를 세는 함수다. 이름도 구조도 SUMIF와 매우 닮았지만, 자세히 들여다보면 미묘하지만 중요한 차이가 하나 숨어 있다.
COUNTIF의 기본 구조
=COUNTIF(A2:A100, "결석")COUNTIF는 조건을 검사할 범위와 조건, 이렇게 두 개의 인수만 받는다. A2:A100 범위에서 "결석"이라는 값과 일치하는 셀이 몇 개인지를 세어 그 개수를 반환한다.
SUMIF와 COUNTIF의 구조적 유사성
지난 글에서 SUMIF의 원리를 "조건 범위를 참/거짓 배열로 바꾸고, 그 배열을 합계 범위 위에 겹쳐서 참인 위치만 더한다"고 설명했다. COUNTIF도 앞부분까지는 완전히 동일하다. 조건 범위를 검사해서 참/거짓 배열을 만드는 과정까지는 똑같다. 차이는 그다음이다. SUMIF는 이 배열을 다른 범위(합계 범위)에 겹쳐서 값을 더하지만, COUNTIF는 겹칠 다른 범위 자체가 필요 없다. 그냥 참/거짓 배열에서 TRUE의 개수만 세면 끝나기 때문이다. 즉 "무엇을 더할지"를 지정할 필요가 없으므로 인수가 하나 줄어드는 것이다. 이렇게 보면 COUNTIF(범위, 조건)는 개념적으로 SUMIF(범위, 조건, 참거짓배열자체)와 비슷한 일을 하는 셈이다.
COUNTIFS — 여러 조건의 동시 만족
=COUNTIFS(A2:A100, "결석", B2:B100, ">=3")COUNTIFS 역시 SUMIFS와 동일한 방식으로 확장된다. 각 조건 범위마다 참/거짓 배열을 만들고, 이 배열들을 같은 위치끼리 AND로 겹친 뒤, 모든 조건이 동시에 참인 위치의 개수를 센다. SUMIFS와 다른 점은 합계 범위 인수가 아예 없다는 것뿐이다. 그래서 COUNTIFS의 인수는 항상 '범위, 조건' 쌍으로만 짝수 개가 나열되고, SUMIFS처럼 맨 앞에 별도의 합계 범위가 붙지 않는다.
COUNTIF vs SUMIF, 헷갈리지 않는 구분법
| 구분 | SUMIF / SUMIFS | COUNTIF / COUNTIFS |
|---|---|---|
| 목적 | 조건에 맞는 값들의 합계 | 조건에 맞는 항목의 개수 |
| 필요한 정보 | 조건 범위 + 합계 범위 | 조건 범위만 |
| SUMIFS/COUNTIFS 인수 순서 | 합계범위가 맨 앞 | 합계범위 없이 조건 쌍만 나열 |
| 결과 예시 | 결석생들의 총 벌점 합계 | 결석생의 인원 수 |
COUNTIF의 숨은 활용 — 중복 검사
COUNTIF는 집계뿐 아니라 중복값을 찾는 용도로도 자주 쓰인다.
=COUNTIF(A:A, A2)>1이 수식은 "A열 전체에서 A2와 같은 값이 몇 개인지 세어, 그 개수가 1보다 크면 TRUE"를 반환한다. 즉 자기 자신을 포함해 2개 이상 나온다는 것은 어딘가에 중복이 있다는 뜻이다. 이 원리는 조건부 서식에서 중복 데이터를 강조 표시할 때도 그대로 사용된다.
자주 하는 실수
- COUNTIF에 세 번째 인수(합계 범위)를 넣으려는 실수: COUNTIF는 애초에 개수만 세므로 무엇을 더할지 지정하는 인수 자체가 존재하지 않는다.
- 빈 셀을 세려다가 의도와 다르게 동작하는 경우: 빈 셀 개수는
COUNTIF(A:A,"")가 아니라COUNTBLANK(A:A)로 세는 것이 더 안전하다. - 텍스트와 숫자를 혼동하는 경우: 조건에 숫자를 넣을 때는 따옴표 없이(예: 3), 부등호와 함께 쓸 때는 따옴표로 감싸서(예: ">=3") 작성해야 한다.
Q. COUNTIF와 COUNTA는 어떻게 다른가요?
COUNTA는 조건 없이 비어있지 않은 셀의 개수를 모두 세는 함수이고, COUNTIF는 특정 조건을 만족하는 셀만 골라서 센다는 점이 다르다.
Q. 조건에 와일드카드(*, ?)를 쓸 수 있나요?
가능하다. "서울*"처럼 쓰면 "서울"로 시작하는 모든 값을, "?울"처럼 쓰면 두 글자 중 뒷글자가 "울"인 값을 찾는 식으로 활용할 수 있다.
Q. COUNTIFS의 조건이 서로 다른 열이 아니라 같은 열이어도 되나요?
가능하다. 예를 들어 한 열에서 "이상 조건"과 "이하 조건"을 동시에 걸어 특정 구간에 속하는 값의 개수를 세는 것도 흔한 활용법이다.
마무리
COUNTIF와 COUNTIFS는 SUMIF/SUMIFS와 조건 범위를 참/거짓 배열로 바꾸는 과정까지는 완전히 같은 원리를 공유하지만, 그 배열을 다른 값에 겹쳐서 더하느냐(SUM) 아니면 참인 개수 자체를 세느냐(COUNT)에서 갈라진다는 점을 기억해두면 두 함수군을 헷갈릴 일이 줄어든다. 다음 글에서는 이 조건부 집계 가족의 세 번째 멤버인 AVERAGEIF가 '평균'이라는 연산을 조건과 어떻게 결합하는지 살펴본다.