王志軍



同事小秦前來求助,如例所示的教職員T考核表,現在需要動態統計所篩選部門的考核情況,例如篩選機電部,則統計機電部的考核情況,篩選信息部,則統計信息部的考核情況。這里的關鍵是需要知道篩選的結果是哪一個部門,由于實際的數據量非常大,手工統計顯然是比較麻煩,有沒有簡單一些的實現方法呢?
第1步:創建輔助列
例如將D列作為輔助列,選擇D2單元格,在編輯欄輸入公式“=SUBTOTAL(3,A$I:A2)-1”,向下拖拽或雙擊填充柄。這里的SUTTOTAL函數用來統計可見單元格的內容,使用的第一個參數是3,告訴SUBTOTAL函數需要執行的匯總方式是COUNTA,COUNTA函數用來計算區域非空單元格的個數,第二個參數“A$I:A2”,“A$1”使用了行的絕對引用,也就是引用白A$l單元格到公式所在行的A列這樣一個逐行遞增的引用區域,來判斷可見非空單元格的個數。這里之所以是“-1”,是因為Excel是將帶有SUBTOTAL函數的表格最后一行作為匯總行,因此需要將SUBTOTAL函數的第二參數引用起始位置寫成公式所在行的上一行,再將結果減去1,否則會出現篩選結果多余的錯誤。
第2步:獲得動態篩選結果
接下來我們可以通過MATCH函數,判斷1在D1:D14的行號,再使用INDEX進行取值,使用公式“=INDEX(A:A,MATCH(1,D$I:D$14,0))”,這樣可以獲得A列班級動態的篩選結果。
第3步:獲取動態統計結果
選擇C17單元格,在編輯欄輸入公式“=SUMPRODUCT(($A$2:$A$14=INDEX(A:A,MATCH(1,D$1:D$14,0)))*($C$2:$C$14=B17))”,向下拖拽或雙擊填充柄,即可獲得圖3所示的統計結果。或者也可以使用公式“=COUNTIFS($A$2:$A$14,INDEX(A:A.MATCH(1,D$1:D$14,0)),$C$2:$C$14.B17)”,統計結果完全相同。
進階:或者也可以不使用輔助列,例如使用數組公式實現。選擇C17單……