我有以下数据集代表我的问题:
1
2
3
1
2
1
2
3
4
我想要实现的是计数直到达到值“1”,所以它看起来像这样:
1 3
2
3
1 2
2
1 4
2
3
4
我尝试使用 countif 但失败了。我不知道如何为此设置适当的参数。感谢您的任何帮助 :)
答案1
答案2
Gary 学生的回答产生正确的结果。但是,
- 直到 B 列完全填满后才有效。
- 对于每一行,它都需要查看从其自身到第 9999 行的每一行。如果实际上有数千行数据,这似乎在计算上会很昂贵。
一个更有效、更独立的答案是
=IF(A1=1, MATCH(1,A2:A$9999,0), "")
与另一个答案一样,这对于 A 列中的值不是 1 的行不执行任何操作(并显示空白)。如果是 1,则公式只需向下搜索 A 列以找到下一个 1。
不幸的是,最后一个区块会失败,因为没有下一个 1. 为了解决这个问题,我们
=IF(A1=1, IFERROR(MATCH(1,A2:A$9999,0), COUNT(A1:A$9999)), "")
即,如果没有下一个 1,则我们一定在最后一个块中,因此只需计算剩余的非空白单元格。无需进行任何算术运算。
这里,B 列是 Gary 学生的公式,C 列是我的第一个公式,D 列是我的第二个公式: