說到條件求和,我們首先會想到sumif/sumifs函數(shù)。sumif/sumifs函數(shù)固然好用,但缺點是只能對單列求和。如果我們想要根據(jù)條件對多列求和,sumif函數(shù)就不夠用了。本文就和大家分享根據(jù)同一條件對多列求和的四種方法。
一、案例
如下圖所示,A1:D18為1-3月各城市銷售額。現(xiàn)在要求在G2:G5單元格分別計算北京、上海、廣州、深圳1-3月銷售總額。
二、操作步驟
方法一、sumproduct函數(shù)
在G2單元格輸入公式
=SUMPRODUCT(($A$2:$A$18=F2)*($B$2:$D$18)),拖動填充柄向下復(fù)制公式。
公式解析:
(1)($A$2:$A$18=F2)對A2:A18是否等于F2“北京”進(jìn)行邏輯判斷,得到的結(jié)果為{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}
(2)($A$2:$A$18=F2)*($B$2:$D$18)將邏輯判斷結(jié)果True(即1)和False(即0)分別與B2:D18區(qū)域相應(yīng)單元格數(shù)值相乘,得到一個3列17行的數(shù)組,{10,20,30;0,0,0;0,0,0;0,0,0;0,0,0;0,0,0;0,0,0;0,0,0;0,0,0;0,0,0;40,50,60;0,0,0;0,0,0;0,0,0;0,0,0;0,0,0;0,0,0}
(3)sumproduct將得到的數(shù)組求和,結(jié)果為對應(yīng) 城市1-3月的銷售額總計。
方法二、sum函數(shù)
在G2單元格輸入公式
=SUM(($B$2:$B$18+$C$2:$C$18+$D$2:$D$18)*(--($A$2:$A$18=F2))),按Ctrl+Shift+Enter完成公式輸入。拖動填充柄向下復(fù)制公式。
公式解析:
(1)($B$2:$B$18+$C$2:$C$18+$D$2:$D$18)將需要匯總的三列數(shù)據(jù)相加,得到的結(jié)果為一組數(shù)組{60;6;15;600;24;6000;33;1500;42;60000;150;15000;51;60;150000;69;78}。
(2)($A$2:$A$18=F2)對A2:A18城市是否等于F2城市進(jìn)行邏輯判斷,得到的結(jié)果為{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}。--($A$2:$A$18=F2),前面的兩個負(fù)號(--)可以將True和False分別轉(zhuǎn)為1和0,得到結(jié)果{1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0}
(3)($B$2:$B$18+$C$2:$C$18+$D$2:$D$18)*(--($A$2:$A$18=F2))結(jié)果為
{60;0;0;0;0;0;0;0;0;0;150;0;0;0;0;0;0}。
(4)sum函數(shù)將得到的一組數(shù)相加,結(jié)果就是對應(yīng)城市一季度銷售額合計。
方法三、sumif函數(shù)+offset函數(shù)
在G2單元格輸入公式=SUM(SUMIF($A$2:$A$18,F2,OFFSET($A$2:$A$18,,ROW($1:$3)))),按Ctrl+Shift+Enter結(jié)束公式輸入。拖動填充柄向下復(fù)制公式。
公式解析:
(1)OFFSET函數(shù)用于生成單元格區(qū)域引用,此處用作sumif函數(shù)的第三個參數(shù)sum_range 。OFFSET($A$2:$A$18,,ROW($1:$3)) 可以得到三個引用B2:B18、C2:C18、D2:D18。
(2)sumif函數(shù)分別對offset函數(shù)生成的三個引用進(jìn)行條件求和,得到的結(jié)果為{50;70;90}。50為B2和B12單元格數(shù)值之和,70為C2和C12單元格數(shù)值之和,90為D2和D12單元格數(shù)值之和。
方法四、sumif函數(shù)+輔助列
在E列構(gòu)造輔助列,對每個城市1-3月銷售額求和。
然后在H2單元格使用sumif函數(shù)進(jìn)行條件求和。