计算下一次发生的细胞数量

我有一个长约5000个项目的清单。 每个项目都标有1-5之间的数字。 在这个列表中的第一个项目是1.我想确定每次有一个1,然后计数有多less个单元格,直到有另一个1.然后,我想总结与每个单元格关联的值来find标有1的每个单元的“总数”。

说我的桌子是这样的(我们会看第3列):

+-----+----+---+ | 20 | A | 1 | | 30 | B | 2 | | 10 | C | 2 | | 20 | D | 3 | | 50 | E | 2 | | 30 | F | 1 | | 40 | G | 2 | | 40 | H | 3 | | 10 | I | 5 | | 50 | J | 1 | +-----+----+---+ 

在A行中,总和将是AE的总和,130。在F行中,总和将是FI的总和,120。

我需要回答的唯一部分是在这个坐标系中从AE计算行数的语法。

谢谢!

索引的替代scheme。 偏移是不稳定的,任何时候任何单元格改变都将导致重新计算整个表格。 大数据集可能导致缓慢。

指数不易变。 您可以使用:

 =IF(C1=1,SUM(A1:INDEX(A2:$A$9999,MATCH(1,C2:$C$9999,0)-1)),"") 

为确保公式的最后结果是正确的,请在同一列(“C”)中的源数据下面的一行中添加“1”值

注意:如果要使用大于当前数据集范围的偏移量变化,则也需要这样做。 否则两个公式都不会find最终的“1”,并返回#N / A。

偏移公式和固定范围还有另一个问题。 公式的当前应用

 =IF(C1=1,SUM(OFFSET(A1,0,0,MATCH(1,C2:$C$10,0))),"") 

然后复制到第10行将导致这个公式在第10行:

 =IF(C10=1,SUM(OFFSET(A10,0,0,MATCH(1,C$10:$C11,0))),"") 

如果源数据的数据范围不固定,则需要在将公式的最后一行进一步复制之前对其进行操作。

我认为最简单的方法是在D1单元格中input以下公式:

 =IF(C1=1,SUM(OFFSET(A1,0,0,MATCH(1,C2:$C$10,0))),"") 

(很明显,将$C$10更新到数据集的末尾)并将其拖下

基本上,你说的是:

  • 如果C列有1,则:
    • 从列A开始总计A列,直到匹配下一个值1
  • 否则返回""

这依赖于Match()函数在第一次find匹配时返回的事实,所以它直接从你的行( C2开始,并继续寻找下一个1值,直到你的底部数据集 – 在这种情况下, $C$10

希望这是有道理的,并伎俩!