excel如何快速匯總多個類別的總和?


這個需求是一位在當前抗疫一線的朋友提出的,和各位分享一下。

需求情況

因為眾所周知的原因,他每天都需要為照顧的小區居民購買、運送生活物資。小區居民通過表單的形式提交自己每日的需求,最終匯總到一張excel表里,如下圖:

每一行就是一戶居民當日需要采購的物資

物資的價格在另外一張名叫“價格”的表當中如下:

這位朋友需要做的就是把每一戶要采購的物資總金額計算出來,然后再進行后面的工作。

解決思路

大致思索一番,其實這個問題可以有多個辦法來解決。

方法一:excel函數

這個辦法有點繁瑣,但是簡單有效。

以第一戶為例,把總金額計算在I2單元格,公式為:

=IF(E2="/",0,1)*價格!$A$3+IF(F2="/",0,1)*價格!$B$3+IF(G2="/",0,1)*價格!$C$3+IF(H2="/",0,1)*價格!$D$3

公式里的IF函數的作用是,對每項物資進行判斷,等於“/”的就為0,不等的就為1,然后再和價格相乘,最后加總求和。

然后再向下拖即可。

方法二:sumproduct函數

這個方法和上面的思路一樣,但是公式更簡化。

還是以第一戶為例,把總金額計算在K2單元格,公式為

=SUMPRODUCT(--(E2:H2<>"/"),價格!$A$3:價格!$D$3)

SUMPRODUCT()函數的作用就是乘積匯總,–(E2:H2<>”/”)表示篩選不等於“/”的項目,標記為1;等於“/”的項目,標記為0;然后再和對應的價格相乘,最后匯總。

然后再向下拖即可。

方法三:VBA

思路基本一致,使用更加靈活,一鍵完成到位。

為了方便,就直接調用方法二中的SUMPRODUCT()函數。

Sub caijia1()
Range("Q2", "Q10").ClearContents
j = [a2].End(xlDown).Row
For i = 2 To j
    Range("M" & i).Value = Evaluate("SUMPRODUCT(--(E" & i & ":H" & i & "<>""/""),價格!$A$3:價格!$D$3)")    
Next
End Sub

這樣的好處是不用再手動的輸入函數,然后再往下拖。只需要一鍵即可完成計算,即使是數據有增加、或者減少,VBA都可以自動識別,省心省力。

暫時就想到這么多。如果你也有好的辦法,歡迎告訴我!

相關閱讀:Excel VBA 實例(25) – 班級隨機點名並播放
Excel VBA 實例(24) – 新股(債)中簽一鍵批量查詢
Excel VBA 實例(23) – 一鍵批量提取word表格內容
Excel VBA 實例(22) – 一鍵篩選其他工作表或工作簿的數據

 

歡迎交流!


免責聲明!

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



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