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))}