標題:
[發問]
多條件計算數值
[打印本頁]
作者:
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
參考看看
=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
= 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")))
複製代碼
感謝以上兩位大大的分享,
我才有辦法推導出這個函式。
主要分成兩個部分,
第一個部分我在上一篇回文有解說過,
= MATCH(A2:A10,A2:A10,)=ROW(A2:A10)-1)
複製代碼
總結就是反饋該範圍「是否為首次出現的編號」的陣列。
如果將該函式分配至儲存格中,效果如下。
[attach]29093[/attach]
=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/)