SUM函數可能是Excel中最最普通平常的函數了,它對數值求和。只要是使用過Excel的人,可能或多或少都接觸過SUM函數。
什么情況下使用SUM函數?
SUM函數計算數值的和,它能夠:
求單元格區域數值之和
求交叉區域的單元格數值之和
跨工作表求和
逐行匯總
自動擴展求和單元格
在數組公式中使用SUM函數
求偶數行單元格數值之和
對單元格區域中的正值求和
SUM函數語法
SUM函數最多有255個參數,其語法如下:
SUM(Number1,[Number2],…)
Number1: 待求和的數值。邏輯值和文本可以作為其參數,但在求和時會被忽略。
用于求和的參數可以是單元格或單元格區域,也可以是公式。
SUM函數陷阱
SUM函數在遇到數字文本時將其轉換為數字,將TRUE轉換為1,FALSE轉換為0,將日期文本轉換成數字序號。
下面兩個公式的結果均為3:
=SUM(1,1,1)
=SUM(1,1,”1”)
下面兩個公式的結果為2.5:
=SUM(1.5,TRUE)
=SUM(1.5,9=3*3)
下面公式的結果為42976:
=SUM(“2017-8-29”)
有些情形下,在求和公式所在單元格之上插入新行時,SUM函數有時會忽略該行。
示例1: 求單元格區域數值之和
要求出各地區在一季度的銷量總和,在單元格B7中的公式為:
=SUM(B2:D5)
技巧:在放置求和公式的單元格中按Alt+=鍵,會自動插入SUM函數。
示例2: 求交叉區域的單元格數值之和
SUM函數能夠計算交叉區域的單元格數值之和。所謂交叉區域,就是兩個或多個單元格區域共同的部分區域。Excel使用空格作為交叉運算符。下面的公式計算單元格區域C3:F5和E3:F7交叉區域E3:F5中的數值之和:
=SUM(C3:F5 E3:F7)
示例3: 跨工作表求和
有時候,要求多個工作表中相同單元格區域的數值之和。例如下圖所示的工作表,要求一月至三月東區3個店的商品之和,工作表中的格式和位置相同,可以使用下面的公式:
=SUM(一月:三月!B2)
對于這樣按每月或者每周或者每日出現的結構相同的工作表,使用SUM函數進行跨工作表匯總非常有用。
示例4: 逐行匯總
如下圖所示的工作表,要求逐行匯總庫存量,即上一日的庫存量與當日出庫或入庫量匯總的值,單元格D3中的公式為:
=SUM(C$3:C3)
注意到公式中的C$3為混合引用,即行為絕對引用,公式下拉時該值不會變化,這確保了計算的起始點總是在第3行。將公式下拉至D7即可在每一行匯總庫存量,在單元格D7中的公式為:
=SUM(C$3:C7)
示例5: 自動擴展求和單元格
有時,在被求和的單元格中插入一行時,可能會忽略該單元格的值。如下圖所示的工作表,在行6之上插入一行,新行中的單元格可能不會包括在SUM函數中。然而,如果使用公式:
=SUM(C1:OFFSET(C6,-1,0))
求和公式會自動包括從單元格C1至公式所在單元格之上的所有單元格。
示例6: 在數組公式中使用SUM函數
如果要求一組數值中最大或者最小的幾個值之和,那么可以在數組公式使用SUM函數。下圖所示為求單元格 A1:A7中最大的兩個值之和,即80和90之和,在單元格B1的中公式為:
=SUM(LARGE(A1:A6,{1,2}))
該公式為數組公式,因此輸入完后要按Ctrl+Shift+Enter組合鍵,Excel會自動在公式兩邊加上花括號。
也可以使用數組公式:
=SUM(LARGE(A1:A6,ROW(INDIRECT(“1:2”))))
使用ROW函數與INDIRECT函數的組合,獲取所要的前2個最大的數值,更靈活。
也可以在某個單元格中輸入要求獲取前幾個最大的數值,然后在公式中引用該單元格。如果在單元格C1中放置要獲取的最大數值個數,那么使用數組公式:
=SUM(LARGE(A1:A6,ROW(INDIRECT(“1″& C1))))
單元格C1中的數組充當變量,當修改其中的數值時,相應的結果隨之改變。
示例7: 對單元格區域中的正值求和
如下圖所示的工作表,命名區域Data為單元格區域A1:C13,數組公式:
=SUM((Data>0)*Data)
求出Data中的正值之和。公式測試區域中的每個值是否大于0,若大于0則Data>0返回TRUE(即1),否則返回FALSE(即0)。這樣,SUM函數的參數就只包括正數。
示例8: 求偶數行的單元格數值之和
如下圖所示的工作表,要求rngData區域中偶數行的單元格數值之和,使用數組公式:
=SUM(IF(MOD(ROW(rngData),2)=0,rngData,0))
對于rngData區域中的每個單元格,如果處在偶數行,那么MOD(ROW(rngData),2)將返回0,此時該單元格中的值會被求和,否則以0代替該行單元格中的值,即該單元格中的值不會被求和。
如果要求每隔n行中的單元格之和,那么可以使用數組公式:
=SUM(IF(MOD(ROW(rngData),n)=1,rngData,0))
將第1行、第n+1行等中的數值相加。