1

我正在尝试做一个足够简单的任务:找到与某个值匹配的数组中最后一个单元格的索引。

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

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

索引匹配结果的照片

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

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

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

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

更糟糕的是,如果我使用相同的代码,但更改输入到 INDEX 的数组,结果会不一致。当我将数组值更改为 1 或 -1 时,有时公式结果会更改,有时不会更改,我不知道为什么。

下面,仅更改第 3 个数组值会将公式的结果从 4 更改为 6。这是怎么回事?!

索引匹配结果的照片(第二个数组配置)

4

2 回答 2

0

似乎匹配只找到第一个,但不是最后一个。

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

期望:您的值介于 H4 和 H27 之间,您要查找的值是“39”

1:找到所有匹配单元格的rownum

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

2:找到I4中的最大rownum --> I27

最大限度(....)

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

最大(....) - 行(H4)

4:仅在一个单元格中将其放入矩阵函数中(CONTROL SHIFT ENTER 生成花括号)

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

听起来很奇怪,但有效:)

于 2016-10-19T19:12:03.770 回答
0

索引不返回数组,而是一个数字,正如名称告诉您的那样,元素的“索引”可以满足您的问题。使用最后一个参数,您可以决定它是否必须准确或可能是下一个较小或下一个较大的值(最后两个选项仅适用于已排序的输入)

在您的特殊情况下(现在使用列而不是行),您可以按照我上一个答案中所写的步骤或矩阵函数来解决您的问题:

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

于 2016-10-20T08:09:42.147 回答