Excel索引匹配的不可预知的输出

我试图做什么应该是一个足够简单的任务:find数组中匹配一个特定值的最后一个单元格的索引。

我正在使用MATCH-INDEX函数组合,给我不正确,不一致的结果。 我无法弄清楚这个问题。

在这个例子中,我正在使用值为1或-1的数组,并试图find数组中最后1的索引。

索引匹配结果的照片

我的理解是(并使用评估公式工具确认),INDEX(A1:F1 = 1,0)应该返回一个数组

{FALSE,TRUE,FALSE,TRUE,FALSE,FALSE} 

为什么MATCH(TRUE,…)给这个索引数组时不给4的结果? MATCH在数组中向后工作,并应返回最后一个匹配的索引,即第4个位置的TRUE值。

但是这里的代码给出了6的结果。

更糟糕的是,如果我使用相同的代码,但是在input到INDEX中的数组周围发生变化,结果是不一致的。 当我将数组值更改为1或-1时,公式结果有时会变化,有时不变,我不知道为什么。

下面,只改变第三个数组的值将公式的结果从4改为6.什么是开?

索引匹配结果的照片(第二个阵列配置)

看起来比赛只能find第一,而不是最后。

但是我有一个可能的解决scheme,我会这样做:

期望:你的值在H4和H27之间,你要找的值是“39”

1:find所有匹配的细胞的rownum

I4→I27:IF(H4 = 39; ROW(H4); -1)

2:在I4 – > I27中find最大的Rownum

MAX(….)

3:减去第一个单元格的rownum(从零开始的索引)

MAX(….) – 行(H4)

4:只有一个单元格放入Matrix函数(CONTROL SHIFT ENTER使CURLY BRACKETS)

{= MAX(IF($ H $ 4:$ H $ 27 = 39; ROW(H4:H27); – 1)) – ROW(H4)}

听起来很奇怪,但工作:)

索引不会返回一个数组,而是一个数字,正如名字所示,元素的“INDEX”符合您的问题。 用最后一个参数,你可以决定,是否必须是精确的,或者可能是下一个较大或下一个较大的值(最后这两个选项将只能使用sorting的input)

你可以在你的问题中解决你的问题,就像写在我最后的答案或matrix函数,在你的特殊情况下(现在用列而不是行):

{= MAX(IF(A1:F1 = 1; COL(A1:F1); – 1))}