如何检查后续的非空单元格是否包含相同的值?

时间:2021-01-10 17:17:20

标签: google-sheets google-sheets-formula

我想计算列中是否有 N 个具有特定值的后续元素(在本例中为 1)。因此,对于下面的示例,它应该为 A 返回 true,而为 B 返回 false。应忽略空单元格。

  A   B
+---+---+
| 1 | 1 |
| 1 | 1 | 
| 1 | 1 |  
|   |   |
| 1 | 2 |  
|   | 1 |
+---+---+
| Y | N | <-- RESULT
+---+---+

理想情况下,如果我可以标记所有这 4 个或更多后续单元格。

2 个答案:

答案 0 :(得分:3)

也看看这个——你需要把它拉到 B、C 列等处。

=ArrayFormula(max(frequency(if(filter(A:A,A:A<>"")=1,sequence(count(A:A)),""),if(filter(A:A,A:A<>"")<>1,sequence(count(A:A)),"")))>=4)

enter image description here

那么这是如何工作的呢?一直追溯到@Barry Houdini,据我所知,他是第一个发布 this elegant method 以在 Excel 范围内查找重复值的最长序列的人。

它使用频率。频率计算落在由切割点定义的一系列 bin 内的值的数量

Frequency(<Values>,<Cut points>)

因此,如果您的切点是 10、20、30,而您的值是 12、15、25、35、36、37,您会期望计数为 2,1 和 3。

@Barry 的洞察力是意识到,如果您将不想计算的值的行号设为切割点和所做的值的行号 em> 想要计数(在本例中为 1)是值,那么您可以使用频率来计算感兴趣的连续值的数量。这导致他使用这个公式(在他的例子中寻找以 1 为界的连续零):

=MAX(FREQUENCY(IF((A2:A100=0)*(A2:A100<>""),ROW(A2:A100)),IF(A2:A100=1,ROW(A2:A100))))

这很容易适应目前的情况,只需将 0 改为 1,将 1 改为 <>1,过滤掉空白并使用 Sequence 而不是行号。

答案 1 :(得分:0)

试试:

=ARRAYFORMULA(IF(TRANSPOSE(MMULT(TRANSPOSE(N(REGEXMATCH(""&
 IF(A1:B6="", 1, A1:B6), "1"))), 
 SEQUENCE(ROWS(A1:B6), 1)^0))/ROWS(A1:B6)=1, "Y", "N"))

enter image description here

相关问题