Excel 中多行求和

Excel 中多行求和

假设我有下表:

(尚无法嵌入图像)

我想找出第一天销售的苹果总数,无论销售给哪个客户。

我有点熟悉,INDEX/MATCH但我不太确定如何进行。

我知道该SUMIF函数可用于仅对所需的日期求和,但我不确定如何使用对多行求和INDEX/MATCH

我正在寻找的输出如下:

(也无法嵌入)

但最重要的是我想知道如何对多个特定行求和因此我请求B16 的公式

答案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。另一方面,不满足条件的单元格(即非空白单元格)将仅分配其行号。此数组作为第二个参数传递给函数SMALLB$15告诉它获取第k个数组中最小的项目。

因此,我们要对以日期编号开头的行求和,这就是此部分的作用:

1*(ROW($A$2:$A$13)>=SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15))

但是,我们还希望将总计限制在下一个非空白单元格正上方的单元格内;因此,<运算符和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))

答案2

如果您可以取消合并Day字段的单元格,使得日期数字出现在每一行中,则数据透视表是迄今为止获得所需结果的最简单的方法:

枢

相关内容