1. 程式人生 > >Excel中只對可見資料求和,實現完美自動篩選.

Excel中只對可見資料求和,實現完美自動篩選.

在使用EXCEL篩選功能時,有個讓人非常苦惱的事情,就是篩選出來的資料沒有小計,如果用常規的sum函式求和,那些被隱藏的行也被被計算進去,得到的不是小計,而是所有資料的總計。



要實現這個效果,其實非常簡單,下面就跟著我一步一步來吧:

一、自動篩選

(1)先在第19行上面插入一個空行:


這樣合計行會變成第20行。

為什麼要插入空行呢,因為如果沒有這個空行,你即使在合計行設定了小計的公式,也會在篩選時被隱藏,所以這個空行是必須的。

(2)選中B1:B18這個區域,然後進行篩選(EXCEL2000/2003版:點選“資料”選單下的“篩選”、“自動篩選”;EXCEL2007/2010版:依次點選資料標籤、篩選按鈕),就會只對部門進行自動篩選,而姓名、工資那些列都不會自動篩選:


(3)隱藏剛才插入的空白行,第19行,這時可以發現,不管怎麼篩選,原先的合計行都不會被隱藏。



二、只對顯示的內容求和

從上表可以看到,雖然篩選了人力資源部的資料,但第20行合計卻依然是所有人的(包括被篩選後隱藏的),這當然不是我們需要的結果。所以要對C20單元格的公式進行修改:

=SUBTOTAL(109,C2:C18)

subtotal是分類求和函式。

第一個引數109的意思是隻對可見區域求和,所以只要是只對可見區域求和就必須是109,要是隻對可見區域求統計有資料的單元格個數就是103。

第二個引數是要求求和的區域,這裡是C2:C18,就是本表工資列的資料區域。

現在可以發現,只要對部門進行了重新篩選,C20單元格的合計數會自動進行變化。

當然,這時候B20單元格顯示的“合計”並不恰當,因為全部顯示時才是“合計”,部分顯示只能是“小計”,B20單元格設定公式:

=IF(SUBTOTAL(103,B2:B18)=COUNTA(B2:B18),"合計","小計")