答案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));"")