Yahoo奇摩知識+將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+服務將會轉為唯讀模式。其他Yahoo奇摩產品與服務或您的Yahoo奇摩帳號都不會受影響。如需關於Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

Daniel
Lv 7
Daniel 發問時間: 電腦與網際網路軟體 · 1 0 年前

EXCEL條件式加總的問題

如附件, http://www.funp.net/3919983

在A,B,C三欄資料裡:

第一欄:名稱, 為要加總的主要項目

第二欄:進出口的細項品名, 要對照Sheet2的A欄或B欄內的資料

第三欄:數值

在相對的(D,E,F)(G,H,I)(J,K,L)(M,N,O)的各欄位裡亦有同類型的資料

我要在一個儲存格裡, 算出單一名稱的淨總合,

即第二欄資料若符合在Sheet2的A欄(即為進口)則數值相加, 若是在B欄(即為出口)則數值相減

使用過SUMPRODUCT, 但一次只能對應符合一個第二欄的值,

若Sheet2裡的A欄有10個, B欄有5個, 則此法必須要算75次

(10+5)X5=75

若Sheet2資料更多, 則需加的次數更多

是否可以使用函數或自訂函數的方式, 在同一個儲存格內計算符合上述條件的總合?

謝謝!!

已更新項目:

謝謝各位大大的幫忙, 還有就是要將進出口的部份用條件式的格式, 顯示不同的顏色, 是否也可以?

5 個解答

評分
  • 顯栓
    Lv 7
    1 0 年前
    最佳解答

    B12 =SUMPRODUCT(($A$2:$M$6=A12)*(COUNTIF(Sheet2!$A$2:$A$10,Sheet1!$B$2:$N$6)-COUNTIF(Sheet2!$B$2:$B$10,Sheet1!$B$2:$N$6)),$C$2:$O$6)

    將B12儲存格公式下拉,完成!

    檔案附件: http://tco.cseintltd.com.tw/applerot/pic/051301.xl...

    2008-05-13 09:20:55 補充:

    SUMPRODUCT 為處理陣列的函數如陣列中有IF函數則失去其功能,須加按

    CTRL+SHIFT+ENTER

    而=SUMPRODUCT(($A$2:$M$6=A12)*(COUNTIF(Sheet2!$A$2:$A$10,Sheet1!$B$2:$N$6)-COUNTIF(Sheet2!$B$2:$B$10,Sheet1!$B$2:$N$6)),$C$2:$O$6)

    不須按 CTRL+SHIFT+ENTER 可直接按 ENTER 即可得到答案‧

    2008-05-13 09:31:08 補充:

    如果進口找不到,就一定是出口的話公式則修改為:

    B12=SUMPRODUCT(($A$2:$M$6=A12)*(COUNTIF(Sheet2!$A$2:$A$10,Sheet1!$B$2:$N$6)*2-1),$C$2:$O$6)

    很像又更簡化了參考看看!選個適合的用!

    2008-05-13 09:39:23 補充:

    如V兄的公式修改為:

    =SUMPRODUCT((ISNUMBER(MATCH($B$2:$N$6,Sheet2!$A$2:$A$500,))*2-1)*($A$2:$M$6=$A12),$C$2:$O$6)

    按 ENTER 完成再下拉 ,也簡化很多不須要的判斷,請自行測試看看!

    2008-05-13 22:29:37 補充:

    再重新下載檔案:

    http://tco.cseintltd.com.tw/applerot/pic/051301.xl...

    看設定格式化條件式是不是合用有無會錯意!

  • Daniel
    Lv 7
    1 0 年前

    =SUMPRODUCT((ISNUMBER(MATCH($B$2:$N$6,Sheet2!$A$2:$A$500,))-ISNUMBER(MATCH($B$2:$N$6,Sheet2!$B$2:$B$500,)))*($A$2:$M$6=$A12),$C$2:$O$6)

    測試後, 這個公式最有效率, 不會影響我其它的執行速度, 也是我要的答案,

    感謝各位大大的幫忙!

  • 1 0 年前

    applerot 大師所言甚是,不但精簡了公式也提高計算效能,真是佳作~~

    小弟將解答轉入意見,留給版主參考就好~~^^

    B12

    {=SUMPRODUCT(IF(ISNUMBER(MATCH($B$2:$N$6,Sheet2!$A$2:$A$6,)),1,-1)*($A$2:$M$6=$A12)*IF(MOD(COLUMN($C$2:$O$6),3),0,$C$2:$O$6))}

    陣列公式

  • ?
    Lv 4
    1 0 年前

    1. A的淨值(A12的位置)公式為:

    =SUMPRODUCT(--($A$2:$A$5=A12),$C$2:$C$5,IF(ISERROR(MATCH($B$2:$B$5,Sheet2!A:A,0)),-1,1))+SUMPRODUCT(--($D$2:$D$5=A12),$F$2:$F$5,IF(ISERROR(MATCH($E$2:$E$5,Sheet2!A:A,0)),-1,1))+SUMPRODUCT(--($G$2:$G$5=A12),$I$2:$I$5,IF(ISERROR(MATCH($H$2:$H$5,Sheet2!A:A,0)),-1,1))+SUMPRODUCT(--($J$2:$J$5=A12),$L$2:$L$5,IF(ISERROR(MATCH($K$2:$K$5,Sheet2!A:A,0)),-1,1))+SUMPRODUCT(--($M$2:$M$5=A12),$O$2:$O$5,IF(ISERROR(MATCH($N$2:$N$5,Sheet2!A:A,0)),-1,1))

    因屬於陣列公式,輸入完後請按Shift+Ctrl+Enter不要直接按Enter

    2. A13~A16的公式由A12往下拉即可。

    3. 為了簡短公式,其中一個假設是,在進口找不到,就一定是出口,不會有進出口(Sheet2)都找不到細項品名的情形發生。

    有問題的話請告知

    參考資料: 自己
  • 1 0 年前

    若你要用ecxel來算同一名稱的總值,最好是放在同一個欄中,因為用邏輯運算也沒辦法,因為你的欄位是分散的。

    除非要用設定程式的方式,不過單純用函數是沒辦法的。

    參考資料: 自己
還有問題?馬上發問,尋求解答。