신입사원 시절, 저는 엑셀 때문에 퇴사를 진지하게 고민했던 적이 있습니다. 월말 마감 날이었는데, 팀장님이 지나가면서 툭 던진 한 마디가 발단이었습니다. “김 대리, 이번 달 서울 지역에서 판매된 ‘데스크’ 수량 좀 뽑아줘. 아, 그리고 그중에서 100개 이상 팔린 거래 건수만 따로 추려보고.”

그때 저는 엑셀의 ‘엑’자도 모르는 컴맹이었습니다. 무식하면 용감하다고, 저는 수천 행이 넘는 데이터를 눈으로 보며 하나씩 세기 시작했습니다. 필터를 걸었다 풀었다를 반복하며 ‘바를 정(正)’자를 노트에 그려가며 개수를 셌죠. 당연히 시간은 오래 걸렸고, 급한 마음에 숫자는 틀렸으며, 결국 팀장님께 “이런 것도 하나 못 해서 어떻게 일을 하겠냐”는 핀잔을 들어야 했습니다.
그날 밤, 억울해서 잠이 안 오더군요. 서점에 달려가 엑셀 책을 뒤지다가 발견한 함수가 바로 오늘 소개할 COUNTIFS입니다. 이 함수 하나를 알게 된 후, 제 엑셀 인생은 완전히 달라졌습니다. 3시간 걸리던 단순 집계 업무가 단 3초 만에 끝나는 기적을 경험했으니까요.
단순히 개수를 세는 COUNTIF는 잊으세요. 실무에서는 조건 하나만 가지고 개수를 세는 일은 거의 없습니다. “서울 지역이면서”, “A 제품이고”, “판매량이 50 이상인” 데이터. 이렇게 복잡한 다중 조건을 한 방에 해결해 주는 만능 해결사, COUNTIFS의 모든 것을 제 경험을 녹여 아주 상세하게 풀어보겠습니다.
COUNTIFS, 왜 엑셀 실무의 꽃이라 불리는가
엑셀에는 개수를 세는 함수가 여러 개 있습니다. COUNT, COUNTA, COUNTIF 등등. 하지만 실무자의 관점에서 딱 하나만 배워야 한다면 저는 주저 없이 COUNTIFS를 꼽습니다.
이유는 간단합니다. 현실의 비즈니스 데이터는 복합적이기 때문입니다. 단순히 ‘사과가 몇 개 팔렸나?’를 묻는 경우는 드뭅니다. ‘2024년 1분기에’, ‘강남 지점에서’, ‘VIP 고객에게’, ‘사과가 몇 개 팔렸나?’를 묻죠.
COUNTIFS는 이름 뒤에 붙은 ‘S’가 의미하듯, **여러 개의 조건(Criteria)**을 동시에 만족하는 교집합(AND 조건) 데이터를 추출하는 데 특화되어 있습니다. 최대 127개의 조건 쌍을 걸 수 있으니, 사실상 우리가 겪을 수 있는 거의 모든 데이터 필터링 상황을 커버할 수 있다는 뜻입니다. 피벗 테이블을 돌리기엔 데이터가 너무 자주 바뀌거나, 양식(Form)이 정해진 보고서에 숫자만 쏙쏙 채워 넣어야 할 때 이 함수만큼 강력한 무기는 없습니다.
1분 만에 이해하는 COUNTIFS 문법 구조
공식이 복잡해 보이지만, 논리는 아주 심플합니다. “어디서(범위), 무엇을(조건) 찾을까?” 이 질문을 계속 반복하면 됩니다.
기본 공식은 다음과 같습니다.
=COUNTIFS(조건범위1, 조건1, [조건범위2, 조건2], …)
쉽게 풀어서 설명해 보겠습니다.
- 조건범위1: 첫 번째 조건을 검사할 구역을 지정합니다. (예: 지역 이름이 적힌 열)
- 조건1: 그 구역에서 찾고 싶은 단어나 숫자를 적습니다. (예: “서울”)
- 조건범위2: (선택사항) 두 번째 조건을 검사할 구역입니다. (예: 판매량이 적힌 열)
- 조건2: (선택사항) 그 구역에서 찾고 싶은 기준입니다. (예: 100 이상)
이 패턴으로 계속 이어 붙이기만 하면 됩니다. 콤마(,)로 구분해서 쌍을 지어준다는 것만 기억하세요.
실전 시나리오 1: 텍스트 조건 2개를 동시에 만족하는 경우
가장 흔한 상황부터 해결해 봅시다. 여러분에게 T_Sales라는 판매 테이블이 있다고 가정합시다. 여기서 **’지역(Region)이 East’**이면서 동시에 **’제품(Product)이 Desk’**인 거래 건수를 세어야 합니다.
많은 분이 여기서 실수를 합니다. 조건을 입력할 때 텍스트에 따옴표를 빼먹는 것이죠. 엑셀 수식에서 텍스트는 무조건 **큰따옴표(“”)**로 감싸야 합니다.
[수식]
=COUNTIFS(T_Sales[Region], “East”, T_Sales[Product], “Desk”)
해석하자면 이렇습니다.
T_Sales[Region] 열을 훑어봐라.- 거기서 “East”라고 적힌 칸만 골라내라.
- 그중에서 다시
T_Sales[Product] 열을 봐라. - 거기서 “Desk”라고 적힌 칸을 남겨라.
- 최종적으로 남은 행의 개수를 세어라.
실전 시나리오 2: ‘하드 코딩’을 피하고 참조 활용하기
위의 예제처럼 수식 안에 “East”를 직접 적어 넣는 것을 프로그래밍 용어로 ‘하드 코딩(Hard Coding)’이라고 합니다. 이건 나쁜 습관입니다. 왜냐하면 팀장님이 “East 말고 West로 바꿔봐”라고 할 때마다 수식을 일일이 고쳐야 하거든요.
진정한 엑셀 고수는 조건을 수식 안에 가두지 않고, 셀 밖으로 뺍니다.
예를 들어 G1 셀에 “East”, G2 셀에 “Desk”를 입력해 두고 수식을 이렇게 짭니다.
[수식]
=COUNTIFS(T_Sales[Region], G1, T_Sales[Product], G2)
이렇게 하면 수식을 건드릴 필요 없이, G1 셀의 글자만 “South”나 “North”로 바꾸면 결과가 실시간으로 변합니다. 여기에 ‘데이터 유효성 검사’로 드롭다운 목록까지 만들어두면, 마우스 클릭만으로 전 지점의 데이터를 조회할 수 있는 인터랙티브한 대시보드가 완성됩니다. 제가 신입 때 이걸로 보고서를 만들었다가 “일 잘한다”는 칭찬을 처음 들었습니다.
실전 시나리오 3: 숫자 비교의 핵심, 부등호 연결하기
텍스트는 일치하는 것만 찾으면 되니 쉽습니다. 문제는 숫자입니다. “판매량이 100개 이상인 것”을 찾으려면 부등호를 써야 하는데, 여기서 많은 분이 에러 메시지(#VALUE!)를 만납니다.
엑셀 함수에서 부등호를 쓸 때는 부등호 자체를 텍스트로 인식시켜야 합니다. 그리고 그 부등호와 셀 주소를 이어주기 위해 앤퍼샌드(&) 연산자를 써야 하죠. 이 문법은 엑셀의 약속이니 외워두시는 게 좋습니다.
예를 들어, G1 셀에 기준값인 100이 입력되어 있다고 칩시다. 판매량(Sold)이 100보다 큰(>) 데이터를 세고 싶다면?
[수식]
=COUNTIFS(T_Tracker[Sold], “>”&G1)
만약 &를 빼먹고 ">G1"이라고 쓰면 엑셀은 “G1이라는 글자보다 큰 것”을 찾으려다가 에러를 냅니다. 반드시 ">"&G1 형태를 기억하세요. 이 문법은 COUNTIFS뿐만 아니라 SUMIFS, AVERAGEIFS에서도 똑같이 쓰입니다.
실전 시나리오 4: 기간 조회 및 범위 검색 (~이상 ~미만)
보고서를 쓸 때 가장 많이 하는 것이 “3월 1일부터 3월 31일 사이의 실적”을 뽑는 것입니다. 즉, 특정 구간(Range) 안에 있는 데이터를 세는 것이죠.
COUNTIFS는 AND 조건(교집합)을 기반으로 하므로, 조건을 두 번 걸어주면 됩니다.
- 날짜가 시작일(3/1)보다 크거나 같아야 함 (
>=) - 날짜가 종료일(3/31)보다 작거나 같아야 함 (
<=)
[수식]
=COUNTIFS(날짜범위, “>=”&시작일셀, 날짜범위, “<=”&종료일셀)
여기서 핵심은 동일한 범위를 두 번 지정한다는 점입니다. 처음에는 시작일 조건을 검사하고, 두 번째는 종료일 조건을 검사해서, 결과적으로 두 날짜 사이에 낀 데이터만 남기는 원리입니다. 날짜뿐만 아니라 “점수가 80점 이상 90점 미만인 학생 수”를 구할 때도 똑같이 적용됩니다.
실전 시나리오 5: OR 조건의 구현 (더하기의 미학)
COUNTIFS의 치명적인 단점은 기본적으로 AND 조건만 지원한다는 점입니다. 그렇다면 “서울 지역 이거나(OR) 부산 지역인 경우”는 어떻게 구할까요?
어렵게 생각할 필요 없습니다. 초등학교 수학으로 돌아가면 됩니다. 서울 지역 개수를 구하고, 부산 지역 개수를 구해서 더하면(+) 됩니다.
[수식]
=COUNTIFS(지역범위, “서울”) + COUNTIFS(지역범위, “부산”)
물론 배열 수식을 사용하면 수식을 한 줄로 줄일 수도 있지만(=SUM(COUNTIFS(..., {"서울","부산"}))), 직관적으로 이해하고 수정하기에는 그냥 더하기(+)를 쓰는 것이 훨씬 낫습니다. 복잡한 수식은 나중에 인수인계할 때 욕먹기 딱 좋으니까요.
실전 시나리오 6: 기억이 가물가물할 땐 와일드카드
데이터 정리가 엉망인 파일을 다룰 때가 있습니다. 어떤 곳은 “삼성 전자”, 어떤 곳은 “삼성전자(주)”, 어떤 곳은 “Samsung”이라고 적혀 있죠. 여기서 “삼성”이라는 글자가 들어간 모든 데이터를 세고 싶다면?
이때 등장하는 것이 조커 카드, 바로 **와일드카드(*, ?)**입니다.
- 별표(*): 글자 수와 상관없이 모든 문자를 의미합니다.
"삼성*"이라고 하면 “삼성”으로 시작하는 모든 단어를 찾습니다. "*삼성*"이라고 하면 앞뒤 상관없이 “삼성”이 포함된 모든 단어를 찾습니다. - 물음표(?): 정확히 한 글자를 의미합니다.
"김?수"라고 하면 “김철수”, “김영수”는 찾지만 “김아무개수”는 찾지 않습니다.
[수식]
=COUNTIFS(제품명범위, “*Desk*”, 지역범위, “????”)
위 수식은 “제품명에 Desk가 포함되어 있고, 지역 이름이 정확히 4글자인 데이터”를 찾아줍니다. 데이터 전처리 과정 없이 빠르게 현황을 파악해야 할 때 이 와일드카드 기능은 빛을 발합니다.
함수 vs 피벗 테이블 vs 필터: 무엇을 써야 할까?
엑셀에는 데이터를 집계하는 도구가 많습니다. 언제 무엇을 써야 할지 헷갈리는 분들을 위해 비교표를 준비했습니다.
| 비교 항목 | COUNTIFS 함수 | 피벗 테이블 (Pivot Table) | 데이터 필터 (Filter) |
| 주요 용도 | 정해진 양식(보고서)에 숫자만 채워 넣을 때 | 데이터를 요리조리 돌려보며 인사이트를 찾을 때 | 데이터를 눈으로 직접 확인하고 검수할 때 |
| 장점 | 원본 데이터가 바뀌면 즉시 자동 업데이트됨 | 드래그 앤 드롭으로 쉽고 빠르게 구성 가능 | 가장 직관적이고 사용하기 쉬움 |
| 단점 | 수식이 복잡해지면 관리가 어렵고 느려질 수 있음 | 원본 변경 시 **’새로 고침’**을 눌러야 함 | 개수만 세기에는 과정이 번거로움 |
| 유연성 | 셀 참조를 통해 동적인 대시보드 제작 가능 | 구조 변경이 자유로우나 양식 고정이 어려움 | 단순히 데이터를 걸러내는 용도에 국한됨 |
저는 보통 자유롭게 분석할 때는 피벗 테이블을 쓰고, 최종 보고서 양식을 만들 때는 COUNTIFS를 씁니다. 피벗 테이블은 새로 고침을 안 해서 과거 데이터를 보고하는 실수를 범할 수 있지만, 함수는 언제나 실시간 데이터를 반영하기 때문입니다.
결론: 칼퇴를 부르는 엑셀의 기초 체력
COUNTIFS는 엑셀 함수 중에서도 VLOOKUP과 함께 ‘직장인 필수 생존 함수’ 양대 산맥으로 불립니다. 단순히 개수를 세는 기능이 아닙니다. 이 함수를 자유자재로 다룬다는 것은 데이터를 논리적으로 분해하고, 내가 원하는 조건으로 재조립할 수 있는 능력을 갖췄다는 뜻입니다.
오늘 배운 세 가지만 기억하세요.
- 조건은 쌍으로 입력한다. (범위, 조건)
- 부등호는 따옴표와 앤퍼샌드(“&”)로 묶는다.
- 기간 조회는 같은 범위를 두 번 쓴다.
처음에는 익숙지 않아 수식 입력 줄이 꼬일 수도 있습니다. 하지만 한 번만 제대로 익혀두면, 월말마다 여러분을 괴롭히던 단순 반복 업무가 사라지는 마법을 경험하실 겁니다. 야근 없는 저녁을 위해, 지금 당장 여러분의 엑셀 파일을 열어 COUNTIFS를 연습해 보세요.