Excel公式:计算列表中的重复因子(Vlookup/Indirect帮助)

Excel Formula: Count repetition factor in a list (Vlookup/Indirect help)

对令人困惑的标题表示歉意;我会在这里更清楚详细地解释我的问题。

所以我有一个包含重复模式的布尔值列表,我正在尝试计算它重复的因子。该列表在开始循环之前总是以未知数量的 FALSE 值开始,并且总是以 TRUE 结束,后跟未知但大量的 FALSE 值。

示例列表:

  1. 错误
  2. 错误
  3. 正确
  4. 错误
  5. 错误
  6. 错误
  7. 正确
  8. 错误
  9. 错误
  10. 错误
  11. 正确
  12. 错误
  13. 错误
  14. 错误
  15. 错误
  16. 错误
  17. 错误

在这种情况下,我想要的重复因子是 4,因为模式每 4 行重复一次(不包括列表的开头和结尾)。

我尝试了几种编写公式的方法来得出 4 作为答案,包括使用计数、一些简单的 vlookup 和偏移尝试。到目前为止,我一直无法得到一个有效的公式。我的猜测是 Indirect 函数在这里可能有用,但我还没有完全理解使用它的逻辑。

就一般策略而言,我猜测如果我能找到第一个和第二个 TRUE 值的行的索引,我可以简单地减去它们以找到重复因子。 (如果这也有帮助的话,我可以轻松地将行号或单元格引用列实现到我的电子表格中。)

提前感谢您的任何见解!

试试这个公式:

=AGGREGATE(15,6,ROW($A:$A)/($A:$A),2)-MATCH(TRUE,$A:$A,0)

MATCH 找到第一行,其中有一个 TRUE。

AGGREGATE 的工作方式类似于 SMALL(IF()) 函数。当单元格为 FALSE 时,它将 return 除以 0 错误,而函数中的 6 会忽略错误。因此,AGGREGATE 将提取第二低行号的数组位于单元格为 TRUE 的那些行上。


编辑

这里是一个非数组公式,它也基于@GaryStudents 的回答:

=MATCH(TRUE,INDEX(A:A,MATCH(TRUE,A:A,0)+1):A1040000,0)

获取两次连续出现的 TRUE 之间的 "distance":

C1中输入:

=MATCH("TRUE",A:A,0)

C2中:

=MATCH("TRUE",INDIRECT("A" & C1+1 & ":A9999"),0)+C1

终于在 C3:

=C2-C1