Excel公式:计算列表中的重复因子(Vlookup/Indirect帮助)
Excel Formula: Count repetition factor in a list (Vlookup/Indirect help)
对令人困惑的标题表示歉意;我会在这里更清楚详细地解释我的问题。
所以我有一个包含重复模式的布尔值列表,我正在尝试计算它重复的因子。该列表在开始循环之前总是以未知数量的 FALSE 值开始,并且总是以 TRUE 结束,后跟未知但大量的 FALSE 值。
示例列表:
- 错误
- 错误
- 正确
- 错误
- 错误
- 错误
- 正确
- 错误
- 错误
- 错误
- 正确
- 错误
- 错误
- 错误
- 错误
- 错误
- 错误
在这种情况下,我想要的重复因子是 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
对令人困惑的标题表示歉意;我会在这里更清楚详细地解释我的问题。
所以我有一个包含重复模式的布尔值列表,我正在尝试计算它重复的因子。该列表在开始循环之前总是以未知数量的 FALSE 值开始,并且总是以 TRUE 结束,后跟未知但大量的 FALSE 值。
示例列表:
- 错误
- 错误
- 正确
- 错误
- 错误
- 错误
- 正确
- 错误
- 错误
- 错误
- 正确
- 错误
- 错误
- 错误
- 错误
- 错误
- 错误
在这种情况下,我想要的重复因子是 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