Excel - 如何计算一列上的非零数字条纹

Excel - How to count streaks of non-zero numbers on one column

我有一个包含各种数字的 wordcount 列,但每个单元格都有一个公式。所以我只想计算具有非零数字的单元格并在它达到零时停止。换句话说,连续上垒。

Daily session count
100
200
400
100
200
=IF(C9<>"",SUM(C9-C8),"")
200
300
=IF(C9<>"",SUM(C9-C8),"")
=IF(C9<>"",SUM(C9-C8),"")
=IF(C9<>"",SUM(C9-C8),"")
=IF(C9<>"",SUM(C9-C8),"")

在这个例子中最长的连胜是 5。我可以用什么公式来计算这个?我将其用于 Google 表格,但我需要它才能用于 EXCEL.

=INDEX(COLUMNS(SPLIT(FLATTEN(SPLIT(TRIM(QUERY('Daily Count'!B2:B,,9^9)), " 0 ", )), " ")))

编辑:所以带有 0 的单元格实际上有一个公式(意味着它们不是空的)但是只有当相邻单元格更新为每日字数时它们才会被填充,因此每日会话计数也会更新。

如果我错过了一天的写作,我仍然会添加每日字数,这意味着每日会话数为“0”。同样,我正在寻找的是对一列中的单元格进行计数,作为大于 0 的最长整数条纹。谢谢 :)

=MAX(FREQUENCY(IF(A1:A9,ROW(A1:A9)),IF(A1:A9=0,ROW(A1:A9))))

您可以在 excel 中尝试:

=MAX(FREQUENCY(IF(A1:A9<>0,ROW(A1:A9)),IF(A1:A9=0,ROW(A1:A9))))

这是数组公式,请按 Ctrl+Shift+Enter

A1:A9 假定为您的范围。

使用 ms365,尝试:

B1中的公式:

=MAX(SCAN(0,A1:A9,LAMBDA(a,b,(a+(b<>0))*(b<>0))))

或者,LET() 嵌套:

=MAX(SCAN(0,A1:A9,LAMBDA(a,b,LET(x,b<>0,(a+x)*x))))