Excel:如何使用这种公式使用INDIRECT:{= MATCH(2,1 /(A1:A10 =“something”))}

时间:2016-06-24 15:25:40

标签: arrays excel row

我一直在寻找特定问题的答案。我找到了一个很好的答案here,其中解决方案是公式:{= MATCH(2,1 /(A1:A10 =“something”))}

我的问题是:如何在 INDIRECT 功能中使用此类公式?我需要用 INDIRECT(“A”& ROW() - 8&“:A& ROW())替换范围A1:A10  我还确保我在=“某事”部分使用了双引号。我试了几个小时却没有成功。

我们将不胜感激。

问候。

1 个答案:

答案 0 :(得分:1)

不要使用INDIRECT(),因为它是一个易失性函数,请使用INDEX():

=MATCH(2,1/(INDEX(A:A,ROW()-8):INDEX(A:A,ROW())=8))

这是一个数组公式,当退出编辑模式而不是Enter时,必须使用Ctrl-Shift-Enter确认。如果操作正确,Excel会自动将{}放在公式周围。

也只是为了确保我们都明白这个公式正在做什么。匹配将返回在找到最后8的九个单元格范围内的相对位置。

所以如果范围有:

1
8
2
8
3
8
5
6
7

它将返回6,因为这是8的最后位置。无论匹配的实际行如何,它都将返回6。该值相对于不是工作表的范围。

易失性函数每次Excel Re计算时都会重新计算,即使它引用的数据发生了变化。相比之下,非易失性函数仅在其引用的数据发生变化时重新计算,从而使计算次数保持最小。

现在你改变了你的问题,使我的回答错了。这是"something"

=MATCH(2,1/(INDEX(A:A,ROW()-8):INDEX(A:A,ROW())="something"))