【发布时间】:2018-06-26 12:42:46
【问题描述】:
我只是在 excel 中使用公式,想知道如何计算所有 0 直到达到 1,然后重新开始该过程。仅使用公式可以实现吗?
现在我正在尝试使用,
=COUNTIF(INDIRECT(F2:F28,0)),1)
...但它似乎不起作用。
数据:
0
1
0
1
1
0
0
0
0
0
0
1
0
1
0
【问题讨论】:
标签: excel excel-formula formula
我只是在 excel 中使用公式,想知道如何计算所有 0 直到达到 1,然后重新开始该过程。仅使用公式可以实现吗?
现在我正在尝试使用,
=COUNTIF(INDIRECT(F2:F28,0)),1)
...但它似乎不起作用。
数据:
0
1
0
1
1
0
0
0
0
0
0
1
0
1
0
【问题讨论】:
标签: excel excel-formula formula
您在此处描述的内容称为 VBA 中的 (Do) While 循环。
诚然,VBA 比公式更容易处理——实际上只需要几行代码。应该是你应该考虑研究的东西
从技术上讲,您可以使用公式伪造
Do While。但这是 通常我不会完全推荐这种做法。
假设您的数据输入从单元格 F2 开始,然后在相邻的 G2 列中输入公式=IF(F2=0, SUM(G1, 1), 0) 并将公式拖过。产生预期的结果
【讨论】:
sum(G1, 1),列标题文本将被忽略为零。
我有一个解决方案,但它不是很优雅。也许其他人可以改进它。但这里是:
假设您的数据在 A 列中。
1) 在B1 中,如果A1 是0,则输入1;如果A1 是1,则输入0。
2) 在B2 中输入公式=IF(A2=0,B1+1,0)
3) 将上面的公式一直拖下去
4) 在C1 中输入公式=IF(B1>B2,B1,"")
5) 把上面的公式一直拖下去
6) C 列现在应该包含所有的零计数。
【讨论】:
您可以在B列中使用以下公式:
=IF(A3=1,COUNTIF(A$1:A2,0)-SUM(B$1:B1),"")
从第 2 行开始向下拖动。
【讨论】:
将 1 放在第一个 0 旁边的单元格中(在我的示例中,它位于 A1 中,所以我将 1 放在 B1 中);
然后试试这个 =IF(A2=A1;B1+1;1)
【讨论】: