我有一个包含如下值的电子表格:
blah 1 12
2 12
3 12
foo 1 6
bar 1 2
foo 1 6
2 5
中间列的数字范围是 1 到 8;右列的数字范围是 1 到 12。中间列始终按顺序排列,没有间隙,但可以在任何值之后重置回 1。左列在 1 行上始终有一个非空白(但不一定是唯一的)值,在 >1 行上有一个空白值。>1 行的值是通常与第一行相同,但并非总是如此(并且我不想假设它们是)。
我想为每一行添加一个带有单一公式的新列:
- 如果第一个数字是 1,则将所有第二个数字相加直到下一行(但不包括下一行)为 1。
- 如果第一个数字是其他数字,则输出 0。
即,上述数据所需的输出是:
36
0
0
6
2
11
0
如果更简单的话,总和可以出现在每个子组的最高行,而不是第一行(尽管我绝对更喜欢它在第一行)。但必须保持行关系——它不能只输出 4 行。
或者,分组决策可以基于空白/非空白列而不是计数列;同样,如果这更容易的话。
答案1
假设您提供的表格位于 A1:C7,请在 D1 中向下复制:
=IF(B1=1,SUM(C1:INDEX(C1:C$1000,IFERROR(MATCH(TRUE,INDEX(B2:B$1000=1,,),0),MATCH(10^10,C:C)))),0)
如果需要,将 1000 调整为足够高的行数。
请注意,此解决方案假定 C 列中的值是数字,而不是以文本形式存储的数字。