오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴

조건별 화면에 보이는 셀의 합계 또는 개수 구하기 :: 엑셀 함수 공식

화면에 보여지는 셀의 개수를 조건별로 계산하는 엑셀 함수 공식의 동작원리 및 실전예제를 알아봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2021. 09. 03. 10:53
URL 복사
메모 남기기 : (25)

조건에 따라 보이는 셀의 합계/개수 구하기 :: 엑셀 함수 공식 

함수공식

= SUMPRODUCT(--(조건범위=조건)*SUBTOTAL(109,OFFSET(합계범위시작셀,ROW(합계범위)-ROW(합계범위시작셀),0,1)))
엑셀 조건별 보이는 셀 합계 개수 구하기
보이는 셀의 합계 또는 개수를 구하는 방법을 알아봅니다.

공식에 대한 설명

SUMPRODUCT 함수SUBTOTAL 함수를 응용하여 보이는 조건별 보이는 셀의 합계 또는 보이는 셀의 개수를 구하는 방법을 알아봅니다.

예제파일 다운로드 및 응용방법

실습파일

사용된 함수

본 예제파일에서는 3개의 매장 (신촌점, 홍대점, 강남점) 의 매출이익률이 30% 미만인 날을 '빨간색'으로 조건부서식을 적용한 뒤, 각 매장별로 이익률이 빨간색인 날의 개수를 계산합니다.

만약 조건별 보이는 셀의 합계를 구할경우, SUBTOTAL의 첫번째 인수로 '109' 를 사용하세요.

= SUMPRODUCT ( --(B6:B35="신촌점") * SUBTOTAL ( 103, OFFSET ( E6, ROW(E6:E35) -  ROW(E6), 0, 1)))

함수의 동작 원리

엑셀 조건별 보이는 셀의 합계 개수 구하기
필터링 된 범위에서 신촌점의 개수를 구합니다.
1. ROW(E6:E35) - ROW(E6)

ROW 함수를 응용하여 각 셀의 위치를 숫자 0부터 반환합니다. 이후 OFFSET 함수를 통해 배열로 반환합니다.

  • ROW(E6:E35)는 각 행번호의 배열을 반환합니다.
    = { 6; 7; 8; ... ; 34; 35 }
  • ROW(E6) 은 숫자 6을 반환합니다.
  • 따라서, ROW(E6:E35) - ROW(E6)은 아래 배열을 반환합니다.
    = { 0; 1; 2; 3;... ; 27; 28 }
2. OFFSET(E6, ROW(E6:E35)-ROW(E6),0,1))

OFFSET 함수를 통해, 시작셀(E6)부터 한칸씩 내려가며 각 셀의 값을 배열로 반환합니다.

  • E6셀을 시작으로 한칸씩 내려가며 총 29개의 셀값을 배열로 반환합니다.
    = OFFSET(E6, { 0; 1; 2; 3; ...; 27; 28 }, 0, 1))
  • 따라서, 아래의 배열이 출력됩니다.
    = { 34.0%; 21.0%; 43.0%; 48.0%; 36.0%; 39.0%; 26.0%; 38.0%; 29.0%; 23.0%; ... }
3. SUBTOTAL(103, OFFSET(E6, ROW(E6:E35)-ROW(E6),0,1)))

SUBTOTAL함수 에서 첫번째 인수로 '103'을 사용하면, 입력된 범위에서 '보이는 셀'의 개수만 세는 동작을 합니다. 따라서, E6:E35 범위중 빨간색 글씨(이익률이 30%미만)만 보이도록 필터를 적용할 경우, 그 중 보이는 셀의 값만 1로 반환합니다.

  • 앞전단계에서 본 OFFSET 함수의 반환값이 SUBTOTAL 함수의 두번째 인수로 들어갑니다.
    = SUBTOTAL(103, { 34.0%; 21.0%; 43.0%; 48.0%; 36.0%; 39.0%; 26.0%; 38.0%; 29.0%; 23.0%; ... }
  • SUBTOTAL 함수의 첫번째 인수로 103을 사용하면 보이는 셀의 개수만 계산하므로,
    ={ 0; 1; 0; 0; 0; 0; 1; 0; 1; 1; ... } 을 반환합니다.
4. --(B6:B35="신촌점")

앞에 사용된 "--" 기호는 논리값을 숫자로 강제변환하는 기호입니다.

  • B6:B35는 매장의 범위를 반환합니다.
    = { 신촌점; 홍대점; 강남점; 신촌점; 홍대점; 강남점; ... }
  • B6:B35="신촌점" 은 B6:B35 범위 중 "신촌점"과 일치여부를 논리값으로 반환합니다.
    = {TRUE; FALSE; FALSE; TRUE; FALSE; FALSE; ... }
  • -- 기호를 통해 논리값이 숫자로 변환되어 반환됩니다.
    = {1; 0; 0; 1; 0; 0; ... }
5. = SUMPRODUCT ( --(B6:B35="신촌점") * SUBTOTAL ( 103, OFFSET ( E6, ROW(E6:E35) -  ROW(E6), 0, 1)))

앞전 단계를 통해, SUMPRODUCT 함수에 입력된 각 인수들의 반환값을 알아봤습니다. SUMPRODUCT 함수의 동작원리는 이전 포스트에서 자세히 설명드렸으니 관련 포스트를 참고하세요.

  • 앞전단계에서 알아본 각 배열의 곱셈을 계산합니다.
    = SUMPRODUCT( {1; 0; 0; 1; 0; 0; ... } * {0; 1; 0; 0; 0; 0; 1; 0; 1; 1; ... } )
  • 결과값으로 나온 배열의 각 항목을 SUMPRODUCT 함수로 합계를 구합니다.
    = SUMPRODUCT( {0; 0; 0; 0; 0; 0; 1; 0; 0; ... })
  • 따라서 SUMPRODUCT 함수는 매장명이 "신촌점"이고 이익률이 "30% 미만" 인 경우의 개수 합계를 계산하게 됩니다.
댓글 25
4.8 (17개 평가)
지니지아
지니지아 2020.03.31 09:19
쉽게 풀이되어있어 좋아요~잘쓰겠습니다.
굴레악
굴레악 2020.07.10 21:52
아 이거 필요해서 어렵게 찾아내서 사용하기는 했었는데요.
아직 자세히 들여다 보질 못해서 이해 못하고 있었습니다.
이제 원리를 이해할 수 있겠군요.
연습 많이해 보겠습니다.
무소유소유
무소유소유 2020.09.08 17:15
이거 엄청 찾고 있었는데, 올려주신 함수식대로 이용하니 말끔히 해결됐습니다. 정말 감사합니다~!!^^
연희징징
연희징징 2021.06.16 10:36
정말 좋은 자료 공유해주셔서 감사합니다!!
윤지빈
윤지빈 2021.10.16 01:04
정말 도움이 많이 됩니다.
그런데, 눈에 보이는 셀의 조건별 합계를 구하는 공식을 다른 사이트에서 찾아서 적용해 본 결과, 동일한 결과가 도출되는데, 아래 함수에서 첫번째 인수에 "+0"을 붙인 게 "--"랑 같은 역할을 하나요?
=SUMPRODUCT((criteriarange=criteria)+0,SUBTOTAL(109,OFFSET(sumrange,ROW(sumrange)-MIN(ROW(sumrange)),0,1,1)))
오빠두엑셀
오빠두엑셀 작성자 2021.10.17 20:54
윤지빈님 안녕하세요?^^
네 맞습니다. -- 와 동일한 역할을 합니다.
향기
향기 2022.03.25 09:33
감사합니다 ! 여기서 ”신촌점” 을 지정하셨는데 만약
신촌이 들어간 단어를 찾으라고 할땐 어찌해야되나요 ?
”*”&신촌&”*” 으로 해보았는데 제대로 카운터를 못하네요..
오빠두엑셀
오빠두엑셀 작성자 2022.03.25 14:48
안녕하세요.
본 수식은 배열수식이므로 특정단어 포함 조건을 아래와 같이 작성해주셔야 합니다. 아래 공식을 활용해보세요
( ISNUMBER(FIND("신촌",조건범위)) )
재미난엑셀
재미난엑셀 2022.07.18 15:22
안녕하세요 : -) 혹시 숨긴 처리 된 셀의 개수는 뻬고서 셀수 있는 방법있있을까요?
오빠두엑셀
오빠두엑셀 작성자 2022.07.26 00:02
안녕하세요. 개수를 구할 경우, Subtotal 함수의 계산방식으로 103을 사용해보세요.
Subtotal 함수 계산방식에 대한 자세한 설명은 아래 링크를 한번 확인해보시겠어요?:) 감사합니다.
https://www.oppadu.com/엑셀-subtotal-함수/
벨제뷔티
벨제뷔티 2022.12.07 16:44
혹시 구글 시트에서 사용하려고 하는데, 행을 숨겨도 빼고 계산되지 않도라고요,

혹시 구글에서 해당 함수를 사용하려면 어떻게 해야될까요?
오빠두엑셀
오빠두엑셀 작성자 2022.12.11 19:56
안녕하세요.
본 수식은 엑셀에서만 잘 동작하고 구글시트에서는 사용할 수 없습니다.
눈누난나
눈누난나 2023.03.15 01:37
위 예시에서 신촌점과 홍대점 매장 개수의 합계를 구하려면 어떻게 해야 할까요?
오빠두엑셀
오빠두엑셀 작성자 2023.03.18 02:20
안녕하세요.
=SUMPRODUCT(--((조건범위=조건1)+(조건범위=조건2))*SUBTOTAL(109,OFFSET(합계범위시작셀,ROW(합계범위)-ROW(합계범위시작셀),0,1)))
형태로 조건1과 조건2에 신촌점과 홍대점을 입력해서 사용해보세요.
황대혁
황대혁 2023.07.11 01:10
OFFSET(E6, ROW(E6:E35)-ROW(E6),0,1) 이부분 입력하고 나면 값배열이 안나오고 value오류배열이 나옵니다...왜 그럴가여?
오빠두엑셀
오빠두엑셀 작성자 2023.07.11 15:48
안녕하세요.
엑셀 2021 / M365 이전 버전에서는 배열이 동적으로 반환되지 않기때문에, 배열이 반환되는 넓은 범위를 우선 선택한 후, Ctrl +Shift + Enter로 수식을 입력해야 합니다.
자세한 내용은 아래 영상 강의를 참고하세요.
https://www.oppadu.com/%EC%A7%84%EC%A7%9C%EC%93%B0%EB%8A%94-%EC%8B%A4%EB%AC%B4%EC%97%91%EC%85%80-7-4-1/
감사합니다.