How to use Excel subtotal function(combine it with OffSet/SumProduct/If/Sum in formula)
In Excel, the SubTotal function is used to calculate subtotals. It has at least two arguments, one of which is the function number, another reference; the function number include 11 functions, and these 11 functions are set to two numbers, they are 111 and 101111 respectively, 111 contains hidden values, 101111 ignores hidden values, and references support up to 254.
SubTotal function can be combined with OffSet, SumProduct, If, Sum, Row and other functions; SubTotal + OffSet + SumProduct + Row is used to add products in the filter state, that is, does not contain values outside the filter; Sum + If + OffSet + SubTotal is used to return the sum of the specified conditions.
I, Excel SubTotal function syntax
1. Expression: SUBTOTAL(Function_Num, Ref1, [Ref2], ...)
2. Description:
A. Function_Num is used to specify the function to be subtotaled, there are 11 functions, each function has two serial numbers, 111 means to contain hidden values, and 101111 means to ignore hidden values, as follows:
 Function_num
(includes hidden values)  Function_num
(ignoring hidden values)  Function
 1
 101
 AVERAGE
 2
 102
 COUNT
 3
 103
 COUNTA
 4
 104
 MAX
 5
 105
 MIN
 6
 106
 PRODUCT
 7
 107
 STDEV
 8
 108
 STDEVP
 9
 109
 SUM
 10
 110
 VAR
 11
 111
 VARP
B. There must be at least one reference, and there can be at most 254 references. If a 3D reference is specified, the SUBTOTAL function will return the reference error value #REF!.
C. If there are nested subtotals in the argument ref, they will be ignored to avoid double counting; rows that are not in the filtering result are also ignored.
D. The argument Function_Num is 111, include the hidden value means that the value of the hidden row through the "hidden" option (ie, manually hidden); the argument Function_Num is 101111, Ignoring the hidden value means ignoring the value of the hidden row by the "hidden" option.
E. When the argument Function_Num is 101111, when the horizontal range is subtotaled, hiding a column does not affect the subtotal; however, hiding a row in the vertical range will affect the subtotal.
II, The use of Excel SubTotal function
(I) Sum Subtotal
1. If you want to subtotal the sum of clothing "Sales". Select the cell E9 cell, copy the formula =SUBTOTAL(9,E2:E8), and paste it in E9, press Enter, return to the result 5028; the operation steps, as shown in Figure 1:
Figure 1
2. In the formula =SUBTOTAL(9,E2:E8), 9 means sum, and E2:E8 is the Sum_Range.
(II) Ignore nested subtotals
1. It has been subtotaled according to "Classification", and now it is subtotaled by SubTotal function. Doubleclick the cell D12, copy the formula =SUBTOTAL(3,D2:D11) to D12, press Enter, return to the statistical result 7; the operation steps are as shown in Figure 2:
Figure 2
2. 3 means CountA function in the formula =SUBTOTAL(3,D2:D11), that is, count the number of cells that are not empty, the result is 7, indicating that there is no nested subtotal cells, because there are 10 nonempty cells from D2 to D11 and three cells contain nested subtotals.
(III) Ignore rows that are not included in the screening results
1. Select the cell E9, copy the formula =SUBTOTAL(9,E2:E8) to E9, press Enter, return to the summation result 5028; select the E2:E8, select the "Data" tab, click "Filter, add the "Filter" icon to the E2 cell, click the icon, select "Number Filters" → Greater Than" in the popup menu, open the "Custom Auto Filter" window, and enter 600 on the "is greater than" right. Click "OK" to filter out the clothing with the sales volume greater than 600. The value in E9 automatically changes to 4171, which means that the rows not included in the screening result are ignored. The operation steps are as shown in Figure 3:
Figure 3
(IV) Includes hidden rows and ignore hidden rows
1. Select the cell E9, copy the formula =SUBTOTAL(2,E2:E8) to E9, press Enter, return to the count result 7 that are the numbers of cells that contain number. Select the second to fourth rows, right click the second row number 2, select "Hide" in the popup menu, the selected three rows are hidden, the value in E9 is still 7; doubleclick E9, change the 2 to 102 in the formula, press Enter, return to the statistical result 4; Operation process steps, as shown in Figure 4:
Figure 4
2. 2 represents the Count function in the formula =SUBTOTAL(2,E2:E8), when the three rows were hidden, the statistical result is still 7, indicating that the argument Function_Num is 111 contains hidden rows; After 2 is changed 102 in the formula, the statistical result becomes 4, indicating that the hidden rows are ignored when the argument Function_Num is 101111.
(V) The effect of hidden rows or columns on the subtotal results
1. Select the cell E10, copy the formula =SUBTOTAL(109,C2:E9) to E10, press Enter, return the sum result 15184; select the second and third row, right click the second row number 2, select "Hide" from the popup menu, the second and third rows were hidden; the value in E10 becomes 12311; press Ctrl + Z to unhide the rows. Right click the fourth column number D, and select "Hide" in the popup menu, the fourth column was hidden, the value in E10 is still 15184; the operation process steps, as shown in Figure 5:
Figure 5
2. When the rows are hidden, the formula =SUBTOTAL(109,C2:E9) ignores the hidden rows; when the column is hidden, the formula =SUBTOTAL(109,C2:E9) counts the hidden column into the sum.
(VI) Referring to multiple ranges at the same time
1. If you require an average sales volume of any two garments (such as "Chiffon" and "Tshirt") in the clothing list. Select cell E10, copy the formula =SUBTOTAL(1,C2:C9,E2:E9) to E10, press Enter to return to 641.875; the operation steps are as shown in Figure 6:
Figure 6
2. 1 means averaging in the formula =SUBTOTAL(1,C2:C9,E2:E9), C2:C9 and E2:E9 are averaging ranges.
III, Excel SubTotal function extension use case
(I) summing up to the current row
1. Doubleclick the cell F2, copy the formula =SUBTOTAL(9,E$2:E2) to F2, press Enter, return to the summation result 982; select the F2 again, and move the mouse to the cell fill handle on the lower right corner of F2, hold down the left button, drag down, drag to F3, sum to F2, then drag to F4, sum to D4; operation steps, as shown in Figure 7:
Figure 7
2. E$2:E2 in formula =SUBTOTAL(9,E$2:E2) represents reference to cell E2, and $2 represents absolute reference to the row. When dragging down, E$2 does not change, and E2 becomes E3, E4, ....
(II) Return the sum of the products in the filtered state with SumProduct + SumTotal + OffSet
1. If calculates the turnover in the screening state. Select cell F1, copy the formula =SUMPRODUCT((D2:D8)*(E2:E8)*SUBTOTAL(3,OFFSET(E1,ROW(1:7),)))) to F1, press Enter, and return to the result 60734.1; select E1:E8, select the "Data" tab, click "Filter", then add the "Filter" icon on E1, click the icon, select "Number Filters" → Greater Than in the popup menu, open the "Custom AutoFilter" window, enter 700 on the right side of "is greater than", click "OK", then filter out the clothing greater than 700, the value in F1 will become 46525.3, indicating the hidden fifth, sixth and eighth are not counted as the sum of the products; the operational steps are as shown in Figure 8:
Figure 8
2. Formula description:
A.The formula =SUMPRODUCT((D2:D8)*(E2:E8)*SUBTOTAL(3,OFFSET(E1,ROW(1:7),)))) execution process is shown in Figure 9:
Figure 9
Formula execution process description: Select F1, hold down Alt, press M once, press V once, open the "Evaluate Formula" window, press Enter to evaluate, and press Enter once to find a value.
B. ROW(1:7) is used to return an array of 1 to 7, that is, {1;2;3;4;5;6;7}; then OFFSET(E1,ROW(1:7),) becomes OFFSET(E1,{1;2;3;4;5;6;7},), when executed, starting in E1, take 1 from the array as the argument Rows for the first time, because the Offset function omits the argument Cols, return the height and width of the cell, thus returning the value of cell E2 in the next row of E1; take 2 from the array as the argument Rows for the second time, return the value of cell E3 in the second row of E1, and so on; and finally return the array {#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}, #VALUE! represents the value in E2:E7, which can be used with the formula =SUM(N(OFFSET(E1,ROW(1:7),))) Verify (press Ctrl + Shift + Enter after entering the formula), as shown in Figure 10:
Figure 10
C. Then SUBTOTAL(3, OFFSET(E1, ROW(1:7),)) becomes SUBTOTAL(3,{#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE! ;#VALUE!}), when executed, each value is taken out of the array in turn, if it is hidden (ie not filtered), it returns 0, otherwise it returns 1, and finally returns {1;1;1;0;0;1;0}, it corresponds to the fifth, sixth, and eighth rows are hidden. Note that the range here is E2:E8, so E2 is the second row, so the first element of the array is 1.
D. D2:D8 returns the value in D2 to D8 as an array, E2: E8 returns the value in E2 to E8 as an array, then multiplies the corresponding elements of the two arrays, and finally returns the array {8838;25923.3;4906;4646.4;5614.4;6858;3948}.
E. Then the formula becomes =SUMPRODUCT({8838;25923.3;4906;4646.4;5614.4;6858;3948}*{0;0;1;0;1;1;1}), and then the two arrays correspond to the elements Multiply, then calculate the sum of each product.
(III) Use the Sum + If + SubTotal + OffSet function to calculate conditionally the sum that don't include hidden values.
1. If the sum of sales of "Men's clothing" is required. Doubleclick the cell E9, copy the formula =SUM(IF(C2:C8="Men's clothing", SUBTOTAL(109,OFFSET(E1,ROW(1:7),))))) to E9, press Ctrl + Shift + Enter, return the summation result 1879; right click the third row number 3, select "hidden" in the popup menu, then the third row (Classification as Men's clothing) is hidden, the value in E9 will change to 982, indicating the hidden row don't add to summation; the operation process steps are as shown in Figure 11:
Figure 11
2. The formula description(to hide the third row as an example): =SUM(IF(C2:C8="Men's clothing", SUBTOTAL(109,OFFSET(E1,ROW(1:7),)))))
A. OFFSET(E1,ROW(1:7),)) has been analyzed in the above example, and finally returns {#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}.
B. SUBTOTAL(109,OFFSET(E1,ROW(1:7),)) becomes SUBTOTAL(109,{#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}), then, return 0 if the value in the array is hidden, otherwise return a specific value, and finally return {982;0;892;528;638;762;329}.
C. C2:C8="mMen's clothing" is the condition of If, meaning: if the text in C2 to C8 is equal to "Men's clothing", return True, otherwise return False; for example, the text in C2 is "Men's clothing", so return True, the text in C3 is "Women's clothing", so return False; finally return the array {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE}.
D. Then the formula becomes =SUM(IF({TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE},{982;0;892;528;638;762;329})), then the corresponding elements in the two arrays are multiplied (when True is converted to 1 and FALSe is converted to 0), the formula becomes =SUM({982;0;FALSE;FALSE;FALSE;FALSE;FALSE}), and finally returns 982.
Hint: If + SubTotal combination cann't be writed: =SubTotal(109,If(C2:C8="Men's clothing"), C2:C8,)).

Related Reading
 Excel CountA and CountBlank function usage examples(
 8 examples of Excel Match function, include it and S
 How to use offset function in excel, include it and
 Excel SumProduct function(multiple criteria, with if
 Excel left function usage(8 examples, with Sum+Value
 How to use Average function in excel(combine with if
 Excel If function examples, include if statement nes
 How to use Excel address function(7 examples, with I
 Excel SumIf function with ?/*, Average and array mul
 How to use excel aggregate function(ignore error val
 How to use Excel find function(9 examples, include f
 Excel column function usage(7 examples, with 1:1/$1: