- 최초 작성일: 2001-01-04
- 최종 수정일: 2026-09-29
- 조회수: 27 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: SubTotal 함수에 대하여
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
보통 때에는 상관없지만 필터링이 된 데이터에 대해 합계나 평균 또는 카운팅을 해야 할 경우, 숨겨진 영역까지 모두 작업대상으로 하기 때문에 곤란할 때가 많습니다. 아래의 표를 보세요.
SubTotal 함수에 대하여
핵심 요약
- 일반 SUM·AVERAGE·COUNTA 함수는 필터로 숨겨진 행까지 계산하지만 SUBTOTAL은 필터 결과에 맞춰 집계할 수 있습니다.
- SUBTOTAL의 첫 번째 인수는 계산 종류를 지정하며 1~11 값으로 평균, 개수, 최대·최소, 합계, 분산 등을 선택합니다.
- 필터링된 목록의 건수·판매합계·평균처럼 화면에 남은 데이터만 집계해야 할 때 SUBTOTAL을 사용하면 편리합니다.
<Source>
| 월 | 팀장명 | 영업사원 | 브랜드 | 수량 | 단가 | 판매액 |
| 1월 | 김재박 | 박재홍 | 아이오페 | 12 | 17500 | =F15*G15 |
| 1월 | 김재박 | 박찬호 | 아이오페 | 15 | 17500 | =F16*G16 |
| 1월 | 김재박 | 이강철 | 아이오페 | 21 | 17500 | =F17*G17 |
| 1월 | 차범근 | 이강철 | 마몽드 | 59 | 7400 | =F18*G18 |
| 1월 | 차범근 | 박재홍 | 마몽드 | 63 | 7400 | =F19*G19 |
| 1월 | 차범근 | 박재홍 | 라네즈 | 52 | 9100 | =F20*G20 |
| 1월 | 이순신 | 박재홍 | 미로 | 99 | 6600 | =F21*G21 |
| 1월 | 이순신 | 이강철 | 미로 | 108 | 6600 | =F22*G22 |
| 1월 | 이순신 | 박찬호 | 미로 | 108 | 6600 | =F23*G23 |
| 1월 | 이순신 | 선동렬 | 미로 | 109 | 6600 | =F24*G24 |
| 1월 | 김재박 | 선동렬 | 마몽드 | 106 | 7400 | =F25*G25 |
| 1월 | 이순신 | 선동렬 | 아이오페 | 54 | 17500 | =F26*G26 |
| 1월 | 차범근 | 박찬호 | 마몽드 | 160 | 7400 | =F27*G27 |
| 1월 | 김재박 | 선동렬 | 라네즈 | 188 | 9100 | =F28*G28 |
| 1월 | 이순신 | 이강철 | 라네즈 | 230 | 9100 | =F29*G29 |
| 1월 | 차범근 | 박찬호 | 라네즈 | 343 | 9100 | =F30*G30 |
| 2월 | 김재박 | 박찬호 | 아이오페 | 12 | 17500 | =F31*G31 |
| 2월 | 김재박 | 이강철 | 아이오페 | 17 | 17500 | =F32*G32 |
| 2월 | 김재박 | 박재홍 | 미로 | 63 | 6600 | =F33*G33 |
| 2월 | 차범근 | 박재홍 | 아이오페 | 29 | 17500 | =F34*G34 |
| 2월 | 차범근 | 박찬호 | 미로 | 94 | 6600 | =F35*G35 |
| 2월 | 김재박 | 선동렬 | 미로 | 95 | 6600 | =F36*G36 |
| 2월 | 김재박 | 이강철 | 미로 | 99 | 6600 | =F37*G37 |
| 2월 | 김재박 | 박찬호 | 마몽드 | 101 | 7400 | =F38*G38 |
| 2월 | 김재박 | 선동렬 | 아이오페 | 43 | 17500 | =F39*G39 |
| 2월 | 이순신 | 이강철 | 마몽드 | 117 | 7400 | =F40*G40 |
| 2월 | 이순신 | 선동렬 | 마몽드 | 131 | 7400 | =F41*G41 |
| 2월 | 이순신 | 선동렬 | 라네즈 | 130 | 9100 | =F42*G42 |
| 2월 | 차범근 | 이강철 | 라네즈 | 147 | 9100 | =F43*G43 |
| 2월 | 차범근 | 박재홍 | 마몽드 | 203 | 7400 | =F44*G44 |
| 2월 | 김재박 | 박재홍 | 라네즈 | 170 | 9100 | =F45*G45 |
| 2월 | 차범근 | 박찬호 | 라네즈 | 506 | 9100 | =F46*G46 |
| 3월 | 김재박 | 박재홍 | 미로 | 30 | 6600 | =F47*G47 |
| 3월 | 차범근 | 선동렬 | 미로 | 72 | 6600 | =F48*G48 |
| 3월 | 차범근 | 박찬호 | 미로 | 76 | 6600 | =F49*G49 |
| 3월 | 차범근 | 이강철 | 아이오페 | 31 | 17500 | =F50*G50 |
| 3월 | 김재박 | 박찬호 | 아이오페 | 37 | 17500 | =F51*G51 |
| 3월 | 이순신 | 박재홍 | 아이오페 | 38 | 17500 | =F52*G52 |
| 3월 | 이순신 | 선동렬 | 아이오페 | 50 | 17500 | =F53*G53 |
| 3월 | 이순신 | 이강철 | 미로 | 140 | 6600 | =F54*G54 |
| 3월 | 차범근 | 이강철 | 마몽드 | 168 | 7400 | =F55*G55 |
| 3월 | 김재박 | 박재홍 | 마몽드 | 218 | 7400 | =F56*G56 |
| 3월 | 김재박 | 박재홍 | 라네즈 | 200 | 9100 | =F57*G57 |
| 3월 | 김재박 | 선동렬 | 마몽드 | 248 | 7400 | =F58*G58 |
| 3월 | 이순신 | 박찬호 | 마몽드 | 256 | 7400 | =F59*G59 |
| 3월 | 이순신 | 이강철 | 라네즈 | 261 | 9100 | =F60*G60 |
| 3월 | 차범근 | 선동렬 | 라네즈 | 320 | 9100 | =F61*G61 |
| 3월 | 차범근 | 박찬호 | 라네즈 | 507 | 9100 | =F62*G62 |
| 4월 | 김재박 | 박재홍 | 미로 | 136 | 6600 | =F63*G63 |
| 4월 | 차범근 | 박찬호 | 미로 | 63 | 6600 | =F64*G64 |
| 4월 | 차범근 | 이강철 | 미로 | 75 | 6600 | =F65*G65 |
| 4월 | 차범근 | 선동렬 | 미로 | 87 | 6600 | =F66*G66 |
| 4월 | 김재박 | 이강철 | 마몽드 | 104 | 7400 | =F67*G67 |
| 4월 | 김재박 | 박찬호 | 마몽드 | 106 | 7400 | =F68*G68 |
| 4월 | 김재박 | 박재홍 | 아이오페 | 48 | 17500 | =F69*G69 |
| 4월 | 이순신 | 이강철 | 아이오페 | 50 | 17500 | =F70*G70 |
| 4월 | 이순신 | 박찬호 | 아이오페 | 50 | 17500 | =F71*G71 |
| 4월 | 이순신 | 선동렬 | 아이오페 | 59 | 17500 | =F72*G72 |
| 4월 | 차범근 | 박재홍 | 마몽드 | 206 | 7400 | =F73*G73 |
| 4월 | 김재박 | 선동렬 | 마몽드 | 245 | 7400 | =F74*G74 |
| 4월 | 이순신 | 박재홍 | 라네즈 | 252 | 9100 | =F75*G75 |
| 4월 | 차범근 | 이강철 | 라네즈 | 419 | 9100 | =F76*G76 |
| 4월 | 차범근 | 선동렬 | 라네즈 | 420 | 9100 | =F77*G77 |
| 4월 | 차범근 | 박찬호 | 라네즈 | 518 | 9100 | =F78*G78 |
이 표를 가지고 "팀장명이 김재박"인 데이터만 필터링하면 또 아래와 같이 될 것입니다.
참고: 아래 표는 필터로 숨겨진 행까지 모두 표시되어 있어 실제 필터링된 화면과 다릅니다. 실제로는 팀장명이 김재박인 행만 화면에 남고 나머지 행은 숨겨지며, 일반함수는 숨겨진 행까지 계산하고 SUBTOTAL은 화면에 남은 행만 계산합니다. 또한 SUBTOTAL의 1~11은 수동으로 숨긴 행을 포함하고, 101~111은 수동으로 숨긴 행도 제외합니다.
| 월 | 팀장명 | 영업사원 | 브랜드 | 수량 | 단가 | 판매액 |
| 1월 | 김재박 | 박재홍 | 아이오페 | 12 | 17500 | =F84*G84 |
| 1월 | 김재박 | 박찬호 | 아이오페 | 15 | 17500 | =F85*G85 |
| 1월 | 김재박 | 이강철 | 아이오페 | 21 | 17500 | =F86*G86 |
| 1월 | 차범근 | 이강철 | 마몽드 | 59 | 7400 | =F87*G87 |
| 1월 | 차범근 | 박재홍 | 마몽드 | 63 | 7400 | =F88*G88 |
| 1월 | 차범근 | 박재홍 | 라네즈 | 52 | 9100 | =F89*G89 |
| 1월 | 이순신 | 박재홍 | 미로 | 99 | 6600 | =F90*G90 |
| 1월 | 이순신 | 이강철 | 미로 | 108 | 6600 | =F91*G91 |
| 1월 | 이순신 | 박찬호 | 미로 | 108 | 6600 | =F92*G92 |
| 1월 | 이순신 | 선동렬 | 미로 | 109 | 6600 | =F93*G93 |
| 1월 | 김재박 | 선동렬 | 마몽드 | 106 | 7400 | =F94*G94 |
| 1월 | 이순신 | 선동렬 | 아이오페 | 54 | 17500 | =F95*G95 |
| 1월 | 차범근 | 박찬호 | 마몽드 | 160 | 7400 | =F96*G96 |
| 1월 | 김재박 | 선동렬 | 라네즈 | 188 | 9100 | =F97*G97 |
| 1월 | 이순신 | 이강철 | 라네즈 | 230 | 9100 | =F98*G98 |
| 1월 | 차범근 | 박찬호 | 라네즈 | 343 | 9100 | =F99*G99 |
| 2월 | 김재박 | 박찬호 | 아이오페 | 12 | 17500 | =F100*G100 |
| 2월 | 김재박 | 이강철 | 아이오페 | 17 | 17500 | =F101*G101 |
| 2월 | 김재박 | 박재홍 | 미로 | 63 | 6600 | =F102*G102 |
| 2월 | 차범근 | 박재홍 | 아이오페 | 29 | 17500 | =F103*G103 |
| 2월 | 차범근 | 박찬호 | 미로 | 94 | 6600 | =F104*G104 |
| 2월 | 김재박 | 선동렬 | 미로 | 95 | 6600 | =F105*G105 |
| 2월 | 김재박 | 이강철 | 미로 | 99 | 6600 | =F106*G106 |
| 2월 | 김재박 | 박찬호 | 마몽드 | 101 | 7400 | =F107*G107 |
| 2월 | 김재박 | 선동렬 | 아이오페 | 43 | 17500 | =F108*G108 |
| 2월 | 이순신 | 이강철 | 마몽드 | 117 | 7400 | =F109*G109 |
| 2월 | 이순신 | 선동렬 | 마몽드 | 131 | 7400 | =F110*G110 |
| 2월 | 이순신 | 선동렬 | 라네즈 | 130 | 9100 | =F111*G111 |
| 2월 | 차범근 | 이강철 | 라네즈 | 147 | 9100 | =F112*G112 |
| 2월 | 차범근 | 박재홍 | 마몽드 | 203 | 7400 | =F113*G113 |
| 2월 | 김재박 | 박재홍 | 라네즈 | 170 | 9100 | =F114*G114 |
| 2월 | 차범근 | 박찬호 | 라네즈 | 506 | 9100 | =F115*G115 |
| 3월 | 김재박 | 박재홍 | 미로 | 30 | 6600 | =F116*G116 |
| 3월 | 차범근 | 선동렬 | 미로 | 72 | 6600 | =F117*G117 |
| 3월 | 차범근 | 박찬호 | 미로 | 76 | 6600 | =F118*G118 |
| 3월 | 차범근 | 이강철 | 아이오페 | 31 | 17500 | =F119*G119 |
| 3월 | 김재박 | 박찬호 | 아이오페 | 37 | 17500 | =F120*G120 |
| 3월 | 이순신 | 박재홍 | 아이오페 | 38 | 17500 | =F121*G121 |
| 3월 | 이순신 | 선동렬 | 아이오페 | 50 | 17500 | =F122*G122 |
| 3월 | 이순신 | 이강철 | 미로 | 140 | 6600 | =F123*G123 |
| 3월 | 차범근 | 이강철 | 마몽드 | 168 | 7400 | =F124*G124 |
| 3월 | 김재박 | 박재홍 | 마몽드 | 218 | 7400 | =F125*G125 |
| 3월 | 김재박 | 박재홍 | 라네즈 | 200 | 9100 | =F126*G126 |
| 3월 | 김재박 | 선동렬 | 마몽드 | 248 | 7400 | =F127*G127 |
| 3월 | 이순신 | 박찬호 | 마몽드 | 256 | 7400 | =F128*G128 |
| 3월 | 이순신 | 이강철 | 라네즈 | 261 | 9100 | =F129*G129 |
| 3월 | 차범근 | 선동렬 | 라네즈 | 320 | 9100 | =F130*G130 |
| 3월 | 차범근 | 박찬호 | 라네즈 | 507 | 9100 | =F131*G131 |
| 4월 | 김재박 | 박재홍 | 미로 | 136 | 6600 | =F132*G132 |
| 4월 | 차범근 | 박찬호 | 미로 | 63 | 6600 | =F133*G133 |
| 4월 | 차범근 | 이강철 | 미로 | 75 | 6600 | =F134*G134 |
| 4월 | 차범근 | 선동렬 | 미로 | 87 | 6600 | =F135*G135 |
| 4월 | 김재박 | 이강철 | 마몽드 | 104 | 7400 | =F136*G136 |
| 4월 | 김재박 | 박찬호 | 마몽드 | 106 | 7400 | =F137*G137 |
| 4월 | 김재박 | 박재홍 | 아이오페 | 48 | 17500 | =F138*G138 |
| 4월 | 이순신 | 이강철 | 아이오페 | 50 | 17500 | =F139*G139 |
| 4월 | 이순신 | 박찬호 | 아이오페 | 50 | 17500 | =F140*G140 |
| 4월 | 이순신 | 선동렬 | 아이오페 | 59 | 17500 | =F141*G141 |
| 4월 | 차범근 | 박재홍 | 마몽드 | 206 | 7400 | =F142*G142 |
| 4월 | 김재박 | 선동렬 | 마몽드 | 245 | 7400 | =F143*G143 |
| 4월 | 이순신 | 박재홍 | 라네즈 | 252 | 9100 | =F144*G144 |
| 4월 | 차범근 | 이강철 | 라네즈 | 419 | 9100 | =F145*G145 |
| 4월 | 차범근 | 선동렬 | 라네즈 | 420 | 9100 | =F146*G146 |
| 4월 | 차범근 | 박찬호 | 라네즈 | 518 | 9100 | =F147*G147 |
| 일반함수 | SubTotal 함수 | |||||
| 件數 | =COUNTA(F84:F143) | =SUBTOTAL(3,H84:H143) | ||||
| 판매합계 | =SUM(H84:H143) | =SUBTOTAL(9,H84:H143) | ||||
| 평균판매 | =AVERAGE(H84:H143) | =SUBTOTAL(1,H84:H143) |
필터링된 데이터를 가지고 발생건수, 판매합계, 평균합계를 구해야 할 경우가 있을 것입니다. 이 때 일반적인 함수(CountA, Sum, Average)를 그냥 적용하게 되면 위의 "일반함수"의 예에서와 같이 제대로 계산을 할 수 가 없습니다.
이럴 때에는 SubTotal() 함수를 사용하면 간단하게 해결하실 수 있습니다.
사용 형식 subtotal(숫자, 영역1, 영역2, 영역3,…)
"숫자"값은 11가지 값 중 하나를 가질 수 있으며 세부 계산방법은 아래와 같습니다.
| 숫자 | 계산 | |
| 1 | Average | 주어진 영역의 평균값을 구합니다. |
| 2 | Count | 숫자를 포함한 셀과 숫자의 개수를 구합니다. |
| 3 | CountA | 공백이 아닌 셀과 값의 개수를 계산합니다. |
| 4 | Max | 최대값을 추출합니다. |
| 5 | Min | 최소값을 추출합니다. |
| 6 | Product | 인수를 모두 곱한 결과를 표시합니다. |
| 7 | Stdev | 표본의 표준편차를 예측합니다. |
| 8 | Stdevp | 모집단 전체의 표준편차를 구합니다. |
| 9 | Sum | 영역의 합계를 구합니다. |
| 10 | Var | 표본의 분산을 계산합니다. |
| 11 | Varp | 모집단 전체의 분산을 구합니다. |
그리고 "영역"은 계산을 하려는 범위나 참조영역을 의미하며 최대 29개까지 가능합니다.
오늘은 여기까지…
엑셀을 처음 접하는 분들, 엑셀을 몇 년간 사용해 왔으나 엑셀의 체계를 다잡고자 하는 분들, 그리고 '이제 엑셀에 대해서는 나를 당할자가 없도다'라고 생각하시는 분들도 참고하시기 바랍니다.
정리 — SubTotal 함수에 대하여
| 구분 | 내용 |
|---|---|
| 문제 | SUM, AVERAGE, COUNTA 같은 일반 함수는 필터로 숨겨진 행까지 계산 |
| 해결 | SUBTOTAL 함수 사용 (형식: SUBTOTAL(숫자, 영역1, 영역2, ...), 영역은 최대 29개) |
| 건수 | =SUBTOTAL(3,H84:H143) |
| 판매합계 | =SUBTOTAL(9,H84:H143) |
| 평균판매 | =SUBTOTAL(1,H84:H143) |
| 숫자 값 | 1 평균, 2 숫자 개수, 3 값 개수, 4 최대, 5 최소, 6 곱, 7 표본 표준편차, 8 모집단 표준편차, 9 합계, 10 표본 분산, 11 모집단 분산 |
자주 묻는 질문 (FAQ)
Q1. 필터링한 데이터의 합계나 평균은 왜 일반 함수로 안 되나요?
SUM, AVERAGE, COUNTA 같은 일반 함수는 필터로 숨겨진 행까지 모두 계산 대상으로 삼기 때문입니다.
Q2. 필터링된 데이터만 계산하려면 어떻게 하나요?
SUBTOTAL 함수를 사용합니다. 첫 번째 인수로 계산 종류를 나타내는 숫자를 지정하고 이어서 계산할 영역을 지정합니다.
Q3. SUBTOTAL의 숫자 인수는 무엇을 뜻하나요?
1부터 11까지의 값으로 1은 평균, 3은 값의 개수, 9는 합계처럼 계산 방법을 선택합니다.
마치며
필터링한 목록의 건수와 합계와 평균은 SUBTOTAL 함수로 간단히 구할 수 있으니 확실히 익혀 두시기 바랍니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.