【问题标题】:How to count until a certain value?如何计数直到某个值?
【发布时间】: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


    【解决方案1】:

    您在此处描述的内容称为 VBA 中的 (Do) While 循环。
    诚然,VBA 比公式更容易处理——实际上只需要几行代码。应该是你应该考虑研究的东西

    从技术上讲,您可以使用公式伪造 Do While。但这是 通常我不会完全推荐这种做法。

    假设您的数据输入从单元格 F2 开始,然后在相邻的 G2 列中输入公式
    =IF(F2=0, SUM(G1, 1), 0) 并将公式拖过。产生预期的结果

    【讨论】:

    • 如果您使用sum(G1, 1),列标题文本将被忽略为零。
    • @Jeeped 这实际上很聪明。谢谢!今天学到了一些新东西 :) (或者,我知道 sum 会忽略文本值,但不知何故它并没有打动我,我也可以在这里使用它)
    • 由于浪费了错误检查周期,我们为每次计算支付了开销。为什么不在我们可以利用的时候利用呢?
    • 如何在 VBA 中做到这一点?我希望它以这样的方式完成,它会在 1 之前留下空格,就像我接受的答案一样。
    • 嗨,安娜,如果您为此创建一个单独的问题,可能会更容易(我的意思是,我的意思是做您的研究,看看这个问题是否有必要)
    【解决方案2】:

    B2中输入:

    =IF(OR(A2=0,A1=1),"",COUNTIF($A$1:A1,0)-SUM($B$1:B1))
    

    并向下复制:

    【讨论】:

    • $B$1:B1 给出了我有循环引用的错误
    • @AnnaLi 记住公式在 B2 而不是在 B1
    【解决方案3】:

    根据您的示例数据,这似乎有效,

    =COUNTIF(F2:INDEX(F:F, IFERROR(AGGREGATE(14, 7, ROW($1:2)/(F$1:F2=1), 1), ROW(F2))), 0)
    

    【讨论】:

      【解决方案4】:

      我有一个解决方案,但它不是很优雅。也许其他人可以改进它。但这里是:

      假设您的数据在 A 列中。

      1) 在B1 中,如果A10,则输入1;如果A11,则输入0

      2) 在B2 中输入公式=IF(A2=0,B1+1,0)

      3) 将上面的公式一直拖下去

      4) 在C1 中输入公式=IF(B1>B2,B1,"")

      5) 把上面的公式一直拖下去

      6) C 列现在应该包含所有的零计数。

      【讨论】:

        【解决方案5】:

        您可以在B列中使用以下公式:

        =IF(A3=1,COUNTIF(A$1:A2,0)-SUM(B$1:B1),"")
        

        从第 2 行开始向下拖动。

        【讨论】:

          【解决方案6】:

          将 1 放在第一个 0 旁边的单元格中(在我的示例中,它位于 A1 中,所以我将 1 放在 B1 中);
          然后试试这个 =IF(A2=A1;B1+1;1)

          【讨论】:

            猜你喜欢
            • 2020-12-24
            • 2019-01-27
            • 2019-10-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多