如果你在 Excel 或是 Google Sheet 很常用 SUMIFS()、COUNTIFS()、AVERAGEIFS(),這些公式來做「有條件的」計算統計,那對你來說或許已經很足夠了!不過我今天要來介紹一個也很好用的公式 FILTER(),簡單來說為什麼好用呢?
痛點:不是所以計算統計變量都有內建「有條件的」計算統計,只有比較常見的這幾個有:SUMIFS()、COUNTIFS()、AVERAGEIFS()
那其他的統計變量,比如說十分位數 PERCENTILE()、 或是我要做排序 RANK()、又或是我要做一些相關性的數據 CORREL(),如果我碰到要在「有條件的狀況下」求不同條件下的十分位數、排序,我該怎麼辦?
解決方式:用 FILTER() + 隨便一個統計函數公式來自己製造跟 SUMIFS()、COUNTIFS() 一樣的效果,看你要單一又或是多條件都可以!
講解:如何用 FILTER() 製作有條件的統計函數?
Step 1: 選擇你要統計的資料欄位,在 FILTER() 中加入條件
Filter() 函數會回傳一段經過篩選過後的數列,第一個參數要放的是預計回傳的範圍,第二個參數要放的是條件,也可以把更多的條件放在二、三、四等等。
FILTER(回傳的數列範圍, 條件1, [條件2,...])
回傳的數列範圍
– 填入準備要篩選的資料條件1
– 輸入你想要的條件條件2...
– [選用,不一定要填寫] –- 注意事項:
回傳的數列範圍
必須與條件
的引數長度完全一致
Step 2: 選擇要使用的統計函數
除了 SUMIFS()、COUNTIFS()、AVERAGEIFS(),很多好用的統計變數其實都沒有內建 IF() 的功能,因此我們要利用 FILTER() 中可以下單一或多條件的這個優點結合我們想要使用的統計函數,形成自創 統計量if(FILTER(回傳的數列範圍, 條件1, [條件2,...]))
的功能!
Step 3: 在統計函數中放入 FILTER() 後的數列
簡單來說,在所有的統計函數中,要 input 數列的那個地方放入由 FILTER(回傳的數列範圍, 條件1, [條件2,...])
篩選過後的數據就沒問題了!
假設我今天想要看全班男生國文成績的中位數,我可以怎麼做?
MEDIAN(FILTER(回傳的數列範圍, 條件1, [條件2,...]))
# 推薦查找函數 VLOOKUP() – 搭配 FILTER() 使用處理複雜問題
大家可能都知道 VLOOKUP() 的好處,如果有一份客戶檔案,我可以利用 VLOOKUP() 去查找 A 客戶某些特定資料的值,但是如果今天的數列裡面 A 客戶在不同時間點有不同的身份或是消費,要怎麼單純利用 VLOOKUP() 去查找到「特定時間點」A 客戶的消費情況或是身份?
這時候就需要組合 VLOOKUP() + FILTER() 來實現這個複雜一點的查找動作:VLOOKUP(查找值, 查找範圍, 查找結果行在查找範圍裡的第幾行, 0)
,查找範圍 請放入篩選後的資料範圍: FILTER(回傳的數列範圍, 條件1, [條件2,...])
,變成 VLOOKUP(查找值, FILTER(回傳的數列範圍, 條件1, [條件2,...]), 查找結果行在查找範圍裡的第幾行, 0)
# 進階查找函數 MATCH+INDEX()
如果你已經知道 VLOOKUP(),那大部分的查找問題應該不難,只是 VLOOKUP() 或是相似函數常常會很麻煩,因為查找方向一定要往左查,不能往右查,所以今天要來推薦一個最好用的查找函數,打敗所有 VLOOKUP() 成為我最愛用的查找函數!
總結一句,查找行放在 MATCH() 中, 再把要找到的結果行和 MATCH() 行放進去 INDEX() 裡面:INDEX(查找後回傳的結果行, MATCH(查找值, 查找範圍, 0))
如果要結合 FILTER() + MATCH()/INDEX(),跟 VLOOKUP() 類似,把查找行和結果行都放入 FILTER() 就可以了!
# 推薦統計函數 PERCENTILE()
如果你想要看一串數列中的分佈,那我推薦你可以使用這個函數來看四分位數/百分位數,他會告訴你當這個數列由小排到大的時候,落在幾分位的數字是多少,你便可以看到大部分的人是集中在哪個區間?
有時候單純看平均數可能會失真,因為平均會因為極大值/極小值而影響他的數值,而百分位數可以看到每個數字區間分別有多少比例的人落在這裡,若跟平均數搭配著看會比較全面性。
▼ 待會下面的範例檔案會有示範:結合 PERCENTILE() + FIlTER()
# 推薦統計函數 SUMPRODUCT()
如果你今天有品項價格跟銷售數字,你可能回想要用 (品項1*品項1銷售數字)+(品項2*品項2銷售數字)….. 以此類推來算出所有品項的業績數字,但是有了 SUMPRODUCT() 後,他可以幫你把這兩行數列乘起來,省去一個一個乗完再相加的步驟,是屬於 SUM() 的進階統計函數用法,這個函數在做處理比較繁複的流程的時候會很好用,因為你可以簡化你的計算流程,化簡為繁錯誤也會比較少!
DEMO: FILTER() + 統計函數 操作練習
實際操作 DEMO
請大家可以來我製作的 Google Sheet FILTER() 完整教學檔案 點我前往範例檔案,如果你想要複製一份出來自己練習,歡迎點擊「檔案」>「建立副本」,建立屬於自己的學習檔案並且練習喔!
▼ 示範數據和範例在範例檔案中可以找到
如果你想要更多練習:可以使用 範例數據 搭配 練習題 試著做做看喔!
總結
很多 Google Sheet 很好用的公式組合可以減少很多日常整理資料的時間,大部分都是 Excel 大全書本裡不會教,但是工作真正會用到的功能,如果你想學習更多 Google Sheet 的小技巧,歡迎定期來看我的分享!
延伸閱讀1:資料分析 101 – Google Sheet Query 教學
延伸閱讀2:Google Sheet Arrayformula 5大超實用使用情境教學 (If, Sumif, Vlookup…)