【问题标题】:How to check if subsequent non-empty cells contains the same value?如何检查后续的非空单元格是否包含相同的值?
【发布时间】:2021-01-13 20:43:39
【问题描述】:

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

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

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

【问题讨论】:

  • 如果该列中的所有单元格都具有相同的值(忽略那些留空),您希望结果为Y,对吗?
  • 不完全 - 如果从列中的所有值中恰好有 N 个(在我的情况下为 4)发生在彼此之后,同时忽略空单元格,我希望有 Y。跨度>

标签: google-sheets google-sheets-formula


【解决方案1】:

也看看这个 - 您需要将它拉到 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)

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

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

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,过滤掉空白并使用序列而不是行号。

【讨论】:

  • 嗨@TomSharpe!您能否简要说明您的公式如何解决用户的问题?谢谢!
  • 是的,很高兴这样做。将添加到我的答案中。
【解决方案2】:

尝试:

=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"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多