SUBTOTAL是一個多功能函式,第一引數支援11種聚合函式,再加上2種模式,非常強大。
但是這些都是基礎,我們今天要聊一下進階用法!進階用法主要利用兩點
如果你先學習基礎可以閱讀此篇:SUBTOTAL函式詳解
1、第一引數支援陣列2、第二引數支援三維引用,且必須是單元格區域!所知最佳搭檔是OFFSET
我們透過兩個案例詳解來,學習上面兩點!
案例1 | 全部測試的最好測試成績平均值
=AVERAGE(SUBTOTAL(4,OFFSET(C2:G2,ROW(1:5),)))
這個是不透過輔助列,直接完成結果的,我們使用一般的處理方式來進行校驗
一般處理方式是先在旁邊新增一列輔助列,然後使用MAX函式取出最大值,
最後透過AVERAGE函式對取出的最大值求平均值!
結果完全OK
公式詳解
1、這裡的要點是在第二引數支援三維引用,而這裡的OFFSET結果生成了
5個平面組成的三維,如下圖!
=OFFSET(C2:G2,ROW(1:5),)
這些平面相對獨立,空間上呈現“三維”,而我們說SUBTOTAL支援三維,所以他可以根據第一引數4-MAX,對這5個平面分別求最大值,而且互不干擾!
關於OFFSET三維的一些知識,可以閱讀此篇進一步學習:
函高 | OFFSET進階引用之引數陣列化
2、5個平面每個一個最大值,求出後,形成記憶體陣列,我們就可以使用AVERAGE等函式進行後續處理!
案例2 | 第一引數陣列化
▼非365請選擇區域三鍵錄入=SUBTOTAL({4,5},OFFSET(C2:G2,ROW(1:5),))
公式解析
1、第一引數使用{4,5}常量輸入,或把我們每個人成績的最大值和最小值都求出來,形成記憶體陣列,O365的同學可以跟演示一樣,回車即可看到動態擴充套件的資料結果,非365,請選擇較大區域,三鍵錄入檢視
2、如果我們先把最大值和最小值分別求和怎麼辦呢?這個其實最適合的就是MM函式-MMULT
=MMULT(COLUMN(A:E)^0,SUBTOTAL({4,5},OFFSET(C2:G2,ROW(1:5),)))
如果你現在還是看不懂MM函式也不要緊,確實屬於進階函式類,先學習的同學也可以閱讀擴充套件:這個MM函式沒你想的那麼可愛
OK,今天我們就先到這裡,如果對你有幫助,記得動動小手~