在 Excel 中按顺序计算列表中任意位置两个变量之间的单元格数量

在 Excel 中按顺序计算列表中任意位置两个变量之间的单元格数量

我正在尝试在 excel 中构建一个公式,以传递两个文本值以在列表中匹配并查找它们之间的单元格数。计数需要按 1 到 27 的顺序进行,如果一个变量位于第 27 行,另一个变量位于第 6 行,则计数应为 (27, 1, 2, 3, 4, 5, 6)。

我有两列,ColA 包含序列号,ColB 包含文本。我使用另外两列引用 ColB 中的文本作为列表来选择两个变量。

然后,我使用索引公式从 ColA 中提取索引号,然后使用该索引创建动态范围并计算两者之间的单元格数,但是没有任何结果。

这是我的公式 对于索引 =INDEX($E$4:$F$30, MATCH(I3,$F$4:$F$30,0),1) 对于计数 = =COUNT(INDIRECT("E"&J3&":E"&J4))

我确信有更好的方法来解决这个问题,但我什么都不知道,希望有人能帮助我。

非常感谢您的帮助。

谢谢

答案1

对于这样的计算,不需要 INDEX() 函数 - 返回的值MATCH() 函数已经是序列中元素的索引。因此,在收到两个所需字符串的索引后,您将通过通常的减法找到它们之间的距离(以单元格为单位):

MATCH(I3;$F$4:$F$30;0)-MATCH(H3;$F$4:$F$30;0)

只要第二个搜索字符串低于第一个字符串,这种方法就很有效 - 索引差始终为正。要处理相反的情况,请使用技巧:将序列的长度添加到结果中,然后使用相同的数字除以序列的长度,取余数MOD() 函数。最后,将结果加 1,以计算包含搜索字符串的两个单元格的数量:

=MOD(MATCH(I3;$F$4:$F$30;0)-MATCH(H3;$F$4:$F$30;0)+COUNTA($F$4:$F$30);COUNTA($F$4:$F$30))+1

或者 - 如果序列的长度永远不会改变并且始终为 27 - 你可以不用COUNTA() 函数

=MOD(MATCH(I3;$F$4:$F$30;0)-MATCH(H3;$F$4:$F$30;0)+27;27)+1

相关内容