今天在書中看到了SUBTOTAL函數的另外一個很實用的應用,這是充分體現知識活學活用的一個案例。在我的分析工作中,篩選功能是用得非常頻繁的,但每次篩選后,對應每行的序列號就會打亂,序列號在篩選后就沒有起到任何作用。
如下圖所示,未篩選前是從1-10按順序排列的序列號。然后我按照顏色中的灰色選項進行篩選,結果就出現了序列號的不連續。此時的序列號已經不再能真實的反映條目數。
這個序列號的問題現在卻可以用我學了的SUBTOTAL函數來解決。怎么做到呢?
如下圖,序號在A列,我們任意選擇一個計數列如B列。此時在第一個計數單元格A2輸入函數公式為:=SUBTOTAL(103,B$2:B2),然后運用前面學過的“+Ctrl”方式將所有需要計數的單元格全部下拉該函數公式。
為什么這樣寫這個公式呢?首先我們需要篩選后的計數結果和篩選后的條目數一致,那么這個就用到了非空單元格的計數函數COUNTA功能,即Function_num取值為3或103。同時,我們要無論怎么篩選,條目數都要從1順序開始計算并顯示,那么就需要用到另外一個符號“$”,即絕對引用標記符號。$符號,放在列標前則固定列標,如$B代表B列固定不變。$符號,放在行號前即可固定行號,如B$2代表B2這個單元格固定不變。B$2:B2指從B2單元格開始到B2單元格位置的區域,實際上僅有B2一個單元格,即計數總為1個。由此SUBTOTAL(103,B$2:B2)代表,A2單元格的計數永遠從1開始,后面的依次順序。所以哪怕進行了篩選,A2單元格也是從1開始計數,后面的單元格只計算不隱藏的數量,那么就會順序往下計數了。
上圖操作結果就是這樣,篩選后序號仍然按照1-5的順序排列。這個公式不光可以計算B列,其他有數值的列都可以運用。比如以C列為單位,就用公式=SUBTOTAL(103,C$2:C2);以D列為單位,就用公式=SUBTOTAL(103,D$2:D2)。
我想只要理解了這個公式以及它的各項參數的用法,那么就可以學著運用各種組合進行自由發揮了。但是前提是還有很多應用符號需要我們更多的去學習。一個單一的知識點是無法發揮很大作用的,只有當知識點串聯或并聯甚至級聯后,產生的效用就不可小覷了。
我每次學習都是看一遍好像就理解了,但當我真的寫成日記后會發現有時候說不清楚,那個說不清楚的地方其實就是我沒有理解清楚的地方。所以,當我真的能夠說清楚的時候,也就到了我能夠掌握運用的時候了。
把學到的東西弄明白、講清楚就是我每天的收獲。