在 Excel 中计算连续数字并显示所有大于 1 的数字

在 Excel 中计算连续数字并显示所有大于 1 的数字

我的 Excel 中有一个 1 和 0 的列表。

在此处输入图片描述

我希望结果计算所有连续的数,并且只返回大于 1 的数。所以结果应该是这样的:

11(7 月 4 日至 14 日)

4(7 月 23 日至 24 日)

等等。我们忽略不连续的 0 和 1。你该怎么做呢?

答案1

这实际上比看起来容易得多。

假设此表图片从 A1 开始,因此“7 月 1 日”在 A2 中,“0”在 B2 中。

然后在 C2 中输入:

If( and( B2=1, B1=1), C1+1, “”)

或者:

If( and( B2=1, B1=1), C1+1, 0)

根据喜好,然后复制下来。

这表示“如果此行的数字和前一行的数字都是 1,则在 C 中保持连续计数。如果此行或前一行的数字不为 1,则将此行的 C 重置为 0 或空值,以便计数将从下一个连续的 1 重新开始。”

请注意,连续 1 序列中的第一个 1 仍将显示 0,并且可能可能不是你想要的。如果是这样,我会在我的回答中添加一点逻辑:

If( and( B2=1, OR( B1=1, B3=1) ), C1+1, 0)

“如果此行为 1,并且前一行或下一行也为 1,则此行是至少两个连续行的一系列行的一部分,因此增加累加器。”

答案2

在 Max 公式的帮助下,我可以提供仅含少量辅助列的完整解决方案。

使用动态数组的解决方案:

C2= =IF( AND( B2=1; OR( B1=1; B3=1) ); C1+1; 0)
D2= =IF(AND(C1>1;C3=0;C2>0);C2;"")
E2= =IF(C2=1;A2;IF(ISNUMBER(D2);A2;""))
H2= =IFERROR(INDEX(FILTER(E2:E28;(E2:E28<>"");"");SEQUENCE(COUNT($E$2:$E$28);;1;2));"")
I2= =IFERROR(INDEX(FILTER(E2:E28;(E2:E28<>"");"");SEQUENCE(COUNT($E$2:$E$28);;2;2));"")
J2= =IFERROR(MAX(FILTER($D$2:$D$28;($A$2:$A$28=I2)*($D$2:$D$28>1)));"")

不使用动态数组(Filter 和 Sequence 函数)的解决方案:

G23=    =G22+2
H22=    =IFERROR(SMALL($E$2:$E$28;G22);"")
I22=    =IFERROR(SMALL($E$2:$E$28;G22+1);"")
J22=    =IFERROR(INDEX($D$2:$D$28;MATCH(I22;$E$2:$E$28;0));"")

在此处输入图片描述

相关内容