Board logo

標題: [發問] 多條件計算數值 [打印本頁]

作者: mark761222    時間: 2018-7-18 20:54     標題: 多條件計算數值

多條件計算數值
有三種條件,來計算符合條件的有幾個,如下圖
請問有什麼函數可以應用
[attach]29001[/attach]
作者: faye59    時間: 2018-7-18 21:28

回復 1# mark761222


    請問你要問的是不是C欄<14天,B欄=種類1且號碼不重複的總數?
B欄條件可能為種類2.3.4....等?
可是你圖片顯示結果是3?
1001<14天且種類1=1
1002>14=0
1003種類2=0
1004種類2=0
1005<14且種類1=1
我怎麼算結果都是2,還是...不是這樣算?
作者: naruto018    時間: 2018-7-19 07:43

回復 1# mark761222

參考看看
  1. =SUMPRODUCT(($C$2:$C$10<14)*($B$2:$B$10=1)/(COUNTIF($A$2:$A$10,$A$2:$A$10)))
複製代碼

作者: hcm19522    時間: 2018-7-19 10:00

SUMPRODUCT((MATCH(A2:A10,A2:A10,)=ROW(A2:A10)-1)*(B2:B10=1)*(C2:C10<14))
作者: mark761222    時間: 2018-7-19 21:00

回復 2# faye59


    對! 是2 下面兩位大大的函數可以,感謝幫忙回答
作者: mark761222    時間: 2018-7-24 15:58

回復 4# hcm19522


    SUMPRODUCT((MATCH(A2:A10,A2:A10,)=ROW(A2:A10)-1)*(B2:B10=1)*(C2:C10<14))

可以幫忙說明函數都用意嗎? 例如ROW(A2:A10)-1)  為啥要-1 取這個值可以做什麼?
作者: mark761222    時間: 2018-7-24 18:55

回復 4# hcm19522



MATCH(A2:A10,A2:A10,)
範圍值對應範圍值的用意是為什麼?
作者: a5007185    時間: 2018-7-31 11:33

回復 7# mark761222

先說結論好了,
以這條函數來反饋結果會有一點問題,
因為函數本身僅反應出首次出現編號條件是否符合,
若我做以下調整,整個計算就會產生錯誤。
[attach]29091[/attach]

hcm19522大大函數的原理如下
1. MATCH(搜尋目標,搜尋範圍,搜尋方法種類) → 目標在範圍中的位置
因為號碼只能重複算一次,
所以使用Match將各項號碼在範圍中第一次出現的序數回饋出來,
如圖所示。
[attach]29090[/attach]

2. ROW(儲存格) → 儲存格列數
如同公式字面上的意思,
回傳儲存格的列數,
例如 ROW(C21) → 21

3. MATCH(A2:A10,A2:A10,)=ROW(A2:A10)-1)
分成兩個部分解釋,
首先是「=」的部分,
為了僅讓首次出現的號碼生效 (為了達成每個號碼只能重複算一次),
故設下條件「若Match的次序與行列相同才算有效」。
但因為實際的範圍是「A2:A10」,
意即順序第一個列數是2、順序第二個列數是3、順序第三個列數是4....的差別,
所以才補上「-1」來調整這個差別。
BTW,若以我示範圖中的範圍,則需要改成「-15」,因為第一順位的列數是16。
作者: a5007185    時間: 2018-7-31 13:15

回復 7# mark761222
  1. = SUMPRODUCT((MATCH(A2:A10,A2:A10,)=ROW(A2:A10)-1)*(COUNTIFS($A$2:$A$10,$A$2:$A$10,$B$2:$B$10,1,$C$2:$C$10,"<14")))
複製代碼
感謝以上兩位大大的分享,
我才有辦法推導出這個函式。
主要分成兩個部分,
第一個部分我在上一篇回文有解說過,
  1. = MATCH(A2:A10,A2:A10,)=ROW(A2:A10)-1)
複製代碼
總結就是反饋該範圍「是否為首次出現的編號」的陣列。
如果將該函式分配至儲存格中,效果如下。
[attach]29093[/attach]
  1. =COUNTIFS($A$2:$A$10,$A$2:$A$10,$B$2:$B$10,1,$C$2:$C$10,"<14")
複製代碼
而此函數在計算在範圍內同時滿足相同編碼、種類為「1」且天數未滿14天三個條件的個數。
也是一樣回傳該範圍計算結果的陣列,
如果將該函式分配至儲存格中,效果如下。
[attach]29094[/attach]

所以綜合以上兩點,
即可得到該編號在範圍中符合條件的個數,
最後再用SUMPRODUCT將陣列中的結果相加。
作者: mark761222    時間: 2018-8-4 22:15

回復 9# a5007185
大大:照著你的方式做了一遍,試著了解,但我出現的好像跟你不一樣

[attach]29139[/attach]
作者: a5007185    時間: 2018-8-5 00:18

回復 10# mark761222


我是將陣列拆解出來給你看在陣列當中的結果,
我是將E2填入「MATCH($A2,$A$2:$A$10,)=ROW($A2)-1)」往下拉,
你試試看吧~
作者: 准提部林    時間: 2018-8-6 22:21

=COUNT(0/(MATCH(1&A2:A20,(B2:B20=1)*(C2:C20<14)&A2:A20,)=ROW(2:20)-1))

C2改成大于14, 結果仍是2, 因其下還有二個小于14~~

MATCH(A2:A20,A2:A20,)=ROW(2:20)-1 不能單獨使用, 會有問題!!
另外也要考慮A欄有空格, 用SUMPRODUCT會有錯誤值, 用COUNT較適用!
作者: afu9240    時間: 2018-8-7 13:02

回復 12# 准提部林


准大 您好
   http://forum.twbts.com/thread-21018-1-1.html
  可以請教嗎????感恩




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)