Excel函數sumproduct應用案例-多條件求和


作者:iamlaosong

越來越認為sumproduct這個函數實用,過去用sum組函數。改起來復制起來都麻煩,sumif在條件多的時候也認為不方便。

如今改用sumproduct函數,就簡單多了。查過sumproduct函數的用法,其解釋為“求二個或二個以上數組的乘積之和”,假設因此就片面地理解為這與多條件求和無關。那就錯了。事實上呢。利用條件真假的值(“真”相應值為1,“假”相應值為0),sumproduct函數用起來要比sumif函數好用的多。

比如。“=SUMPRODUCT((A1:A100=“project師”)*1)”就統計了A列中含有“project師”的行數。須要注意的是,后面“*1”是不可缺少的。否則結果為零。以下舉幾個應用案例。

1、庫存統計

Excel文件里有三張表,一張入庫記錄,一張出庫記錄,一張庫存記錄。在加入出入庫記錄后。庫存表用sumproduct函數自己主動反應當前庫存。

(1)入庫記錄表A、B、C、D、E、F列

入庫時間 單據號 零件號 貨物數量 包裝種類 質量狀態
2013-06-04 A1307703 F114001721 72 料箱 合格
2013-06-04 A1307703 F114001722 36 料箱 合格
2013-06-04 A1307703 F114001723 72 料箱 合格
2013-06-04 A1307703 F114001724 48 料箱 合格
2013-06-04 A1307703 F114001725 48 料箱 合格
2013-06-04 A1307703 F114001726 120 料箱 合格
2013-06-04 A1307703 F114001727 48 料箱 合格
2013-06-04 A1307703 F114001728 24 料箱 合格
2013-06-04 A1307708 F114001729 144 料箱 合格
2013-06-04 A1307708 F114001730 48 料箱 合格
2013-06-04 A1307708 F114001731 48 料箱 合格
2013-06-04 A1307708 F114001732 48 料箱 合格
2013-06-04 A1307708 F114001733 72 料箱 合格
2013-06-04 A1307708 F114001734 72 料箱 合格
2013-06-04 A1307714 F114001728 144 料箱 合格
2013-06-04 A1307714 F114001729 144 料箱 合格
2013-06-04 A1307714 F114001730 48 料箱 合格
2013-06-04 A1307714 F114001731 48 料箱 合格
2013-06-04 A1307714 F114001732 48 料箱 合格
2013-06-04 A1307714 F114001733 144 料箱 合格
2013-06-04 A1307714 F114001734 144 料箱 合格
2013-06-04 A1307719 F114001735 72 料箱 合格
2013-06-04 A1307719 F114001736 36 料箱 合格
2013-06-04 A1307719 F114001737 144 料箱 合格

(2)出庫記錄表A、B、C、D、E、F列

出庫時間 單據號 零件號 貨物數量 包裝種類 質量狀態
2013-06-06 0000003 F114001721 576 料箱 合格
2013-06-06 0000005 F114001722 192 料箱 合格
2013-06-06 0000006 F114001723 240 料箱 合格
2013-06-06 0000007 F114001724 252 料箱 合格
2013-06-07 0000008 F114001725 288 料箱 合格
2013-06-07 0000008 F114001726 288 料箱 合格
2013-06-07 0000008 F114001727 144 料箱 合格
2013-06-07 0000009 F114001728 432 料箱 合格
2013-06-07 0000010 F114001729 216 料箱 合格
2013-06-07 0000010 F114001730 360 料箱 合格
2013-06-07 0000010 F114001731 144 料箱 合格
2013-06-07 0000011 F114001732 144 料箱 合格
2013-06-07 0000012 F114001733 72 料箱 合格
2013-06-07 0000013 F114001734 360 料箱 合格
2013-06-07 0000014 F114001728 120 料箱 合格
2013-06-07 0000016 F114001729 72 料箱 合格
2013-06-07 0000016 F114001730 118 料箱 合格
2013-06-07 0000016 F114001731 144 料箱 合格
2013-06-07 0000016 F114001732 144 料箱 合格
2013-06-08 0000018 F114001733 72 料箱 合格
2013-06-08 0000018 F114001734 72 料箱 合格
2013-06-08 0000019 F114001735 216 料箱 合格
2013-06-08 0000019 F114001736 216 料箱 合格
2013-06-08 0000020 F114001737 192 料箱 合格

(3)庫存記錄表A、B、C、D、E、F、G列

零件號 貨物名稱 包裝種類 質量狀態 合計入庫 合計出庫 庫存數量
F114001721 YN3 HousingLH 料箱 合格 1116 1564 72
F114001722 YN3 HousingRH 料箱 合格 492 1163 36
F114001723 YN3 LensLH 料箱 合格 668 2295 72
F114001724 YN3 LensRH 料箱 合格 600 2183 48
F114001725 YP7 HousingLH 料箱 合格 312 1152 48
F114001726 YP7 HousingRH 料箱 合格 624 926 120
F114001727 YP7 LensLH 料箱 合格 1008 636 48
F114001728 YP7 LensRH 料箱 合格 600 2308 24
F114001729 T61 HousingLH 料箱 合格 648 1352 144
F114001730 T61 HousingRH 料箱 合格 264 1368 0
F114001731 T61 LensLH 料箱 合格 228 954 0
F114001732 T61 LensRH 料箱 合格 180 1480 0
F114001733 T63 HousingLH 料箱 合格 520 1048 0
F114001734 T63 HousingRH 料箱 合格 444 1138 0

(4)庫存計算公式

合計入庫:=SUMPRODUCT((入庫!$C$2:$C$65535=庫存!$A2)*(入庫!$E$2:$E$65535=庫存!$C2)*(入庫!$F$2:$F$65535=庫存!$D2)*(入庫!$D$2:$D$65535))

合計出庫:=SUMPRODUCT((出庫!$C$2:$C$65535=庫存!$A2)*(出庫!$E$2:$E$65535=庫存!$C2)*(出庫!$F$2:$F$65535=庫存!$D2)*(出庫!$D$2:$D$65535))

公式中每一組數字的條件判定。就會得出不同的“真”與“假”,數組的值變成了不同的“0”和“1”,各組的數字相乘,僅僅有條件全然達到的行。才有可能得到數值。這些數值相加的結果就是我們要求的值。這就是SUMPRODUCT方式的多條件求各和。上述第一個公式能夠描寫敘述為(第二個公式同理):

=SUMPRODUCT((入庫零件號區域=庫存零件號)*(入庫包裝種類區域=庫存包裝種類)*(入庫質量狀態區域=庫存質量狀態)*(入庫數量區域))

庫存數量:=E2-F2

2、每日質量通報

Excel文件里有三張表,一張質量記錄匯總表,一張每日通報,一張累計通報,在加入每天質量記錄后(點擊button。VBA程序自己主動依據P1單元格中的日期從數據庫中提取質量記錄)。每日通報和累計通報用sumproduct函數自己主動反應當前質量情況。改動日期,每日通報和累計通報兩張報表馬上反應當日的質量數據。

(1)質量記錄A、B、C、D、E、F列

投遞日期 投遞單位 時限情況
進口郵件數 未及時妥投郵件數 未妥投郵件數 及時妥投率 
2014-9-1 合肥市 168 30 7 77.98%
2014-9-1 阜陽市 44 3 0 93.18%
2014-9-1 蚌埠市 40 1 0 97.50%
2014-9-1 蕪湖市 103 7 0 93.20%
2014-9-1 安慶市 60 9 0 85.00%
2014-9-1 宿州市 45 4 0 91.11%
2014-9-1 滁州市 73 1 0 98.63%
2014-9-1 六安市 52 1 0 98.08%
2014-9-1 黃山市 17 3 0 82.35%
2014-9-1 淮北市 15 1 0 93.33%
2014-9-1 亳州市 34 2 1 91.18%
2014-9-1 淮南市 37 1 1 94.59%
2014-9-1 馬鞍山 24 1 0 95.83%
2014-9-1 宣城市 29 3 0 89.66%
2014-9-1 銅陵市 23 4 0 82.61%
2014-9-1 池州市 21 3 0 85.71%
2014-9-2 合肥市 270 109 8 56.67%
2014-9-2 阜陽市 62 7 0 88.71%
2014-9-2 蚌埠市 51 1 0 98.04%
2014-9-2 蕪湖市 107 10 0 90.65%
2014-9-2 安慶市 72 5 0 93.06%

(2)每日通報A、B、C、D、E、F列

投遞單位 時限情況
進口郵件數 未及時妥投郵件數 未妥投郵件數 及時妥投率 
合肥市 168 30 7 77.98%
阜陽市 44 3 0 93.18%
蚌埠市 40 1 0 97.50%
蕪湖市 103 7 0 93.20%
安慶市 60 9 0 85.00%
宿州市 45 4 0 91.11%
滁州市 73 1 0 98.63%
六安市 52 1 0 98.08%
黃山市 17 3 0 82.35%
淮北市 15 1 0 93.33%
亳州市 34 2 1 91.18%
淮南市 37 1 1 94.59%
馬鞍山 24 1 0 95.83%
宣城市 29 3 0 89.66%
銅陵市 23 4 0 82.61%
池州市 21 3 0 85.71%
累   計 785 74 9 89.43%

計算公式(單元格P1存放通報日期):

進口郵件數:=SUMPRODUCT((數據匯總!$A$4:$A$500=$P$1)*(數據匯總!$B$4:$B$500=$A4)*(數據匯總!C$4:C$500))

未及時妥投郵件數:=SUMPRODUCT((數據匯總!$A$4:$A$500=$P$1)*(數據匯總!$B$4:$B$500=$A4)*(數據匯總!D$4:D$500))

未妥投郵件數:=SUMPRODUCT((數據匯總!$A$4:$A$500=$P$1)*(數據匯總!$B$4:$B$500=$A4)*(數據匯總!E$4:E$500))

及時妥投率 :=(B4-C4-D4)/B4

(3)累計通報

內容和每日通報一樣僅僅是數據為當月累計而已,所以各字段公式也幾乎相同,僅僅是多了個小於符號“<”。即:

進口郵件數:=SUMPRODUCT((數據匯總!$A$4:$A$500<=$P$1)*(數據匯總!$B$4:$B$500=$A4)*(數據匯總!C$4:C$500))

未及時妥投郵件數:=SUMPRODUCT((數據匯總!$A$4:$A$500<=$P$1)*(數據匯總!$B$4:$B$500=$A4)*(數據匯總!D$4:D$500))

未妥投郵件數:=SUMPRODUCT((數據匯總!$A$4:$A$500<=$P$1)*(數據匯總!$B$4:$B$500=$A4)*(數據匯總!E$4:E$500))

及時妥投率 :=(B4-C4-D4)/B4


公式的含義就不解釋了。就是多條件求和。這里的條件能夠是多種形式的。等於、大於、小於、不等於都行,僅僅要記住真假的值:真=1,假=0就能夠了。








免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM