首頁>技術>

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,今天我們就先到這裡,如果對你有幫助,記得動動小手~

14
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • React 狀態管理對比