Excel 计算下一次发生的单元格数
我有一长串大约5000件物品的清单。每个项目都标有一个介于1-5之间的数字。此列表中的第一项是1。我想确定每一次都有一个1,然后计算有多少个细胞跟随它,直到有另一个1。然后,我想对与每个单元格相关联的值求和,以找到标记为1的每个单元格的“总数” 假设我的表如下所示(我们将查看第3列): 在A行中,总和为A-E的和,130。 在F行中,总和为F-I的和,120 我需要回答的唯一部分是,在这种情况下,从A-E计算行数的语法是什么Excel 计算下一次发生的单元格数,excel,vba,Excel,Vba,我有一长串大约5000件物品的清单。每个项目都标有一个介于1-5之间的数字。此列表中的第一项是1。我想确定每一次都有一个1,然后计算有多少个细胞跟随它,直到有另一个1。然后,我想对与每个单元格相关联的值求和,以找到标记为1的每个单元格的“总数” 假设我的表如下所示(我们将查看第3列): 在A行中,总和为A-E的和,130。 在F行中,总和为F-I的和,120 我需要回答的唯一部分是,在这种情况下,从A-E计算行数的语法是什么 谢谢 我认为最简单的方法是在单元格D1中输入以下公式: =IF(C1=
谢谢 我认为最简单的方法是在单元格
D1
中输入以下公式:
=IF(C1=1,SUM(OFFSET(A1,0,0,MATCH(1,C2:$C$10,0))),"")
(显然,将$C$10
更新到数据集的末尾)并将其向下拖动
基本上,你的意思是:
- 如果列C的值为1,则:
- 从我的行开始,一直向下取A列的和,直到与下一个
1
- 从我的行开始,一直向下取A列的和,直到与下一个
- 或者返回
”
Match()
函数在第一次找到匹配项时将返回,因此它直接从您的匹配项后面的行开始(C2
,并继续查找1
的下一个值,直到数据集的底部-在本例中,$C$10
)
希望这是有道理的,并做到这一点 有索引的替代方案。偏移量是不稳定的,在任何时间任何单元格更改时都会导致重新计算整个工作表。使用可能导致速度缓慢的大型数据集 索引不是易变的。您可以使用:
=IF(C1=1,SUM(A1:INDEX(A2:$A$9999,MATCH(1,C2:$C$9999,0)-1)),"")
为确保公式的最后一个结果正确,请在同一列中源数据下方的行(“C”)中添加一个“1”值
注意:如果要使用范围大于当前数据集的偏移变化,也需要此选项。否则,这两个公式将找不到最终的“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))),"")
如果源数据的数据范围不是固定的,则在进一步向下复制公式之前,需要操作公式的最后一行 我不知道
OFFSET()
导致重新计算的问题。。。确定+1!!:)
=IF(C10=1,SUM(OFFSET(A10,0,0,MATCH(1,C$10:$C11,0))),"")