1. 程式人生 > >巧用sumproduct和vlookup完成多種類金額分類彙總

巧用sumproduct和vlookup完成多種類金額分類彙總

iamlaosong文

對於異常郵件在判定責任後按考核規定需要扣罰責任單位,情況不同,扣罰金額不同。現在有彙總的異常郵件明細,已經判定了責任單位和原因,現在要求各責任單位的扣罰總額。如果明細中有扣罰金額,那麼分類彙總是很簡單的事,用sumif函式和sumproduct函式均可以完成,現在是明細中只有原因,金額在一個對照表中。

明細表如下圖所示:


要求生成下列統計結果(手機和省內兩個明細表分別統計):


首先想到的用sumproduct函式完成,但是不同專案如何整合到一個公式中去呢?最簡單的辦法是一個一個的統計,再加起來,即:

=SUMPRODUCT((手機!$J:$J=A3)*(手機!$K:$K=$J$3)*$K$3)
+SUMPRODUCT((手機!$J:$J=A3)*(手機!$K:$K=$J$4)*$K$4)
+SUMPRODUCT((手機!$J:$J=A3)*(手機!$K:$K=$J$5)*$K$5)
+SUMPRODUCT((手機!$J:$J=A3)*(手機!$K:$K=$J$6)*$K$6)
+SUMPRODUCT((手機!$J:$J=A3)*(手機!$K:$K=$J$7)*$K$7)
+SUMPRODUCT((手機!$J:$J=A3)*(手機!$K:$K=$J$8)*$K$8)
+SUMPRODUCT((手機!$J:$J=A3)*(手機!$K:$K=$J$9)*$K$9)
+SUMPRODUCT((手機!$J:$J=A3)*(手機!$K:$K=$J$10)*$K$10)

可是這個公式腦殘不說,速度也慢,萬一增加專案,公式還要改,後來想到用vlookup函式。首先想到的是用vlookup將扣罰金額加到明細中,這樣彙總就簡單了,但這樣需要在明細表中增加公式,這是很不方便操作的,因為明細是不斷變化的。經過思考和試驗,找到了下面的公式:

=SUMPRODUCT((手機!$J:$J=A3)*VLOOKUP(手機!$K:$K,$J$3:$K$12,2,0))

多麼簡潔!如下圖所示:


相關推薦

sumproductvlookup完成種類金額分類彙總

iamlaosong文 對於異常郵件在判定責任後按考核規定需要扣罰責任單位,情況不同,扣罰金額不同。現在有彙總的異常郵件明細,已經判定了責任單位和原因,現在要求各責任單位的扣罰總額。如果明細中有扣罰金

CocosCreatorPomelo編寫人在線實時聊天室(一)----基礎知識環境安裝

shu 以及 pan 信息 ast pre alt web 技術 客戶端:Cocos Creator 1.6.2服務器端:Pomelo 2.2.5源碼地址:https://github.com/foupwang/CocosCreatorChatForPomelo.git 本

原生nodefshttp完成檔案上傳到伺服器

var http=require("http"); var fs=require("fs"); http.createServer(function(req,res){ res.writeHead(200,{"Content-type":"text/html;charset=UTF-8","

移位按位與運算子輸出二進位制補碼

一 問題描述   給定任一整型值,輸出其二進位制補碼(即機器碼)。二 求解思路   整型值在機器中正是以二進位制補碼存放,在JAVA中,用print函式輸出的是其十進位制形式。&運算子會將兩邊的運算元按其二進位制形式逐個bit求與,並最終生成一個整型值(不同於邏輯與,

ajaxjsp完成使用者註冊的使用者名稱驗證(使用者名稱唯一)

//非同步請求處理物件 function checkUserName(obj){ //1.要建立非同步處理物件,XMLHttpRequest var xmlReq=new XMLHttpRequest(); //2.設定請求資料 //1).get方式請求 /*xmlReq.open("GET

array_map()array_reduce()替代foreach迴圈

1、array_reduce( $arr , callable $callback ) 使用回撥函式迭代地將陣列簡化為單一的值。 其中$arr 為輸入陣列,$callback($result , $value)接受兩個引數,$result為上一次迭代產生的值,$val

oracle 行轉列(函式遊標完成)

create table students (student_id varchar2(32), student_name varchar2(180), student_age number ) insert into students values('1','金瑞','1

html之實戰二--tableform完成註冊介面

<html>     <head>         <meta charset="utf-8" />         <title>第二次實戰--用table和form做出一個漂亮的註冊頁面</title>   

在visual studio IDE 正則表示式 完成替換工作

1 如將  this.colPrDisprack_shortname.FieldName = "陳列架號程式碼"; 替換成: this .colPrDisprack_shortname.FieldName = "PrDisprack_shortname" ; 查詢的正則表示式為:  {thi

模板變換維分析表格樣式

自定義表格樣式 多維分析展現報表時,潤乾報表提供了一套預設的表格樣式,統一的表格樣式可以使業務人員減少報表美化的工作量。然而預設的樣式不可能迎合所有使用者的審美,為此潤乾提供了自定義表格樣式的功能,供使用者實現個性化的需求,下面小編就來教你如何改變預設表格的樣式。 先來看下預設的表格樣式,下

#"/""%"解決實際

在使用“/”和“%”中,主要存在兩個問題 1:區分不清楚;2:在解決問題使不能充分的利用這兩個運算子。 基本概念: [1 ] “/” 表示除法;兩個整數相除的結果為整數,所以想要得到float型別或double型別,需要進行數值轉換或將分子乘以1.0; e.g: 5/3=1;(

css的border屬性完成對圖片編輯功能的效能優化

一、需求場景: 最近閒來無事,boss提出了一個要求,研究相關程式碼並完成一個關於編輯圖片功能的效能優化,該功能的主要介面展示如下: 通過了幾分鐘的短暫試用,發現就是一個簡單的裁剪並儲存使用者選擇並上傳的圖片作為使用者頭像的功能。 主要功能點如下: 選擇圖片並上傳。 拖動中間選擇區域的位

MyBatis中的表操作情形一:一對一(方式1:一條sql語句查詢,MyBatis3.0可以associationcollection標籤)

MyBatis支援多表操作,即可以將資料庫中多表的關係對映到物件之間的關係中 表與表之間的關係可以有:一對一,一對多,多對多 關係一演示案例:人和身份證是一對一的,分別建兩個表person和card,其中person的cardid欄位外來鍵關聯card的id,

藉助Spring自定義註解完成資料來源配置

前一段時間研究了一下spring多資料來源的配置和使用,為了後期從多個數據源拉取資料定時進行資料分析和報表統計做準備。由於之前做過的專案都是單資料來源的,沒有遇到這種場景,所以也一直沒有去了解過如何配置多資料來源。 後來發現其實基於spring來配置和使用多資

java網路程式設計(二)複Socket連線以及使用執行緒完成個客戶端的連線

在前面的示例中,客戶端中建立了一次連線,只發送一次資料就關閉了,這就相當於撥打電話時,電話打通了只對話一次就關閉了,其實更加常用的應該是撥通一次電話以後多次對話,這就是複用客戶端連線。 那 麼如何實現建立一次連線,進行多次資料交換呢?其實很簡單,建立連線以後,

img的widthheight屬性進行縮圖,使圖片不變形

轉自:http://blog.csdn.net/rj042/article/details/4873576 做過web開發的哥們都會遇到要顯示圖片的情況。有時候在頁面上因為佈局的限制,所以需要限制圖片顯示的尺寸(即縮圖顯示)。 有如下幾種情況: 1:要求圖

使用IF({1,0}VLOOKUP實現Excel雙條件條件查詢

在Excel中,通過VLOOKUP函式可以查詢到資料並返回資料。不僅能跨表查詢,同時,更能跨工作薄查詢。   但是,VLOOKUP函式一般情況下,只能實現單條件查詢。   如果想通過VLOOKUP函式來實現雙條件或多條件的查詢並返回值,那麼,只需要加上IF({1,0}就可以

Spring(七)@Resource@Autowired註解完成屬性裝配及自動裝配

使用到註解需匯入jar包:common-annotations.jar 手工裝配依賴物件有兩種程式設計方式: 一、在xml配置檔案中通過bean節點進行配置,如: <?xml version="1.0" encoding="UTF-8"?>

通過IF({1,0}VLOOKUP函式實現Excel的雙條件條件查詢

在Excel中,通過VLOOKUP函式可以查詢到資料並返回資料。不僅能跨表查詢,同時,更能跨工作薄查詢。   但是,VLOOKUP函式一般情況下,只能實現單條件查詢。   如果想通過VLOOKUP函式來實現雙條件或多條件的查詢並返回值,那麼,只需要加上IF({1,0}就可以

margin/padding的百分比值實現高度自適應(用於佔位,避免閃爍)

一個基礎卻又容易混淆的css知識點 本文依賴於一個基礎卻又容易混淆的css知識點:當margin/padding取形式為百分比的值時,無論是left/right,還是top/bottom,都是以父元素的width為參照物的! 也許你會說,left/right以父元素的w