我试图做一个应该是一个足够简单的任务:找到一个匹配特定值的数组中最后一个单元格的索引。
我正在使用MATCH-INDEX函数组合,它给出了错误的,不一致的结果。我无法弄清楚问题。
在这个例子中,我使用值为1或-1的数组,并试图找到数组中最后1的索引。
我的理解是(并使用评估公式工具确认),INDEX(A1:F1 = 1,0)应返回
数组{FALSE,TRUE,FALSE,TRUE,FALSE,FALSE}
为什么MATCH(TRUE,...)在输入此索引数组时不会给出4的结果? MATCH在数组中向后工作,应返回最后一个匹配的索引,即第四个位置的TRUE值。
但是这里的代码给出了6的结果。
更糟糕的是,如果我使用相同的代码但改变了输入INDEX的数组,则结果不一致。当我将数组值更改为1或-1时,有时公式结果会发生变化,有时它不会变化,我无法弄清楚原因。
下面,仅更改第3个数组值会将公式的结果从4更改为6.正在进行什么?!
答案 0 :(得分:0)
似乎匹配只找到第一个,但不是最后一个。
但我有一个可能的解决方案,我会按以下方式进行:
期望:你的价值在H4和H27之间,你寻找的价值是" 39"
1:找到所有匹配单元格的rownum
I4 - > I27:IF(H4 = 39; ROW(H4); -1)
2:找到I4中的最大rownum - > I27
MAX(....)
3:减去第一个细胞的rownum(基于零的指数)
MAX(....) - ROW(H4)
4:只在一个单元格中输入矩阵函数(CONTROL SHIFT ENTER使得CURLY BRACKETS)
{= MAX(IF($ H $ 4:$ H $ 27 = 39; ROW(H4:H27); - 1)) - ROW(H4)}
听起来很奇怪,但有效:)
答案 1 :(得分:0)
索引不会返回一个数组,而是一个数字,如名称所示," INDEX"元素,满足你的问题。使用最后一个参数,您可以决定它是否必须精确,或者可能是下一个较小或下一个较大的值(最后两个选项仅适用于已排序的输入)
您可以在我的上一个答案或矩阵函数中以一个步骤解决您的问题,在您的特殊情况下(现在使用列而不是行):
{= MAX(IF(A1:F1 = 1; COL(A1:F1); - 1))}