答案1
如果您可以選擇取消合併 A 列中的儲存格並將其標準化,那麼簡單的方法SUMIFS
應該可行。否則,請嘗試以下操作:
=SUMPRODUCT($C$2:$C$13,
1*($B$2:$B$13=$A16),
1*(ROW($A$2:$A$13)>=SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15)),
1*(ROW($A$2:$A$13)<SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15+1)))
結果:
╔════════╦════╦════╗
║ Day ║ 1 ║ 2 ║
╠════════╬════╬════╣
║ Apple ║ 60 ║ 90 ║
║ Orange ║ 0 ║ 85 ║
║ Pear ║ 75 ║ 0 ║
╚════════╩════╩════╝
來源:
修改了公式在這裡找到:
解釋:
核心部分是SMALL
函數
SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15)
它為指定範圍建立行號數組,其中不包含任何內容的儲存格 ( =""
) 的值比對應的行號 ( +100*
) 大 100。另一方面,不符合條件的儲存格(即非空白儲存格)將僅被指派其行號。該數組作為第二個參數傳遞給SMALL
函數B$15
,告訴它獲取第 k 個數組中最小的項。
因此,我們想要對以日期開頭的行進行求和,這就是這部分的作用:
1*(ROW($A$2:$A$13)>=SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15))
但是,我們也希望將總計限制為下一個非空白儲存格正上方的儲存格;因此,<
運算符 and B$15+1
(即第 (k+1) 個最小的項目)在以下部分:
1*(ROW($A$2:$A$13)<SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15+1))