2016-12-21 20 views
0

this Excel question的回答以及到其他页面的链接对理解Excel中的数组非常有帮助。带有数组常量的Excel INDEX()函数与范围

我玩了一段时间,并没有检测到覆盖所有情况的一般规则。我仍然对INDEX()函数的行为有点困惑。

Here is a workbook这演示了我发现的一些事情。当使用行和/或列参数时,它们大多与“边缘案例”(例如一维数组或范围)有关。如果工作簿中的笔记不清楚,请在此处发表评论。

问题:如果其他人能够提出一个为什么INDEX()的行为像它一样的一般解释,这将是很好的,特别是如果它也推广到其他数组公式和功能。

谢谢!

回答

0

您的示例工作表非常全面。

N/A错误: 当您使用数组函数(Excel调用的函数遍布单元格范围和大括号{..}),并且该函数返回的结果范围小于函数范围要求填写数组函数,它将剩余单元格中的不可用错误编号#N/A。

REF错误: 当INDEX(..)函数提供的范围对于行索引参数和列索引参数太小时,会出现#REF错误。 #REF错误是Excel告诉你它无法找到你想要引用的单元格的方式。 #REF是参考错误的缩写

TRANSPOSE问题: 您在D列中有REF错误,因为您已经在5x1形状范围内要求第三列的值(_x3)(A48:1x5形状范围的转置: E48是5x1形状)。同样,列C返回值5. 第54和56行具有相同的基础问题。

+0

我认为我的工作手册中有些问题我不清楚。我知道在某些情况下我的数组边界大于数组,并且我了解大多数N/A和REF错误。我会在明天更新表格以澄清我所问的内容。大多数情况下,我不明白'INDEX()'在使用行和列参数时的脆弱性。仅举一个例子:你在我的例子中提到了D列,而D列显示了我的预期,但为什么上面的行C不是**也有REF错误? (参见C行左边的注释)。 – vknowles

+0

在D列中,通过省略在您的数组模式中调用INDEX的行参数,并跳过列3中的所有行,从而跳过将'3'置于'col'位置= INDEX(TRANSPOSE(A48:E48),, 3) ,但你只有一个,所以它重复。在列C中,您有= INDEX(TRANSPOSE(A48:E48),3)固定'行'的值并允许= INDEX()在数组模式中默认'col'值,但col 3根本不存在。 – JimmyNJ

+0

对不起,我今天没有时间更新工作簿。关于你对C和D列的评论,那些表现如我所料。我的困惑不得不处理列示例上方网格中的行C和D.我预计C排显示#REF!错误方式与D列相同,但它没有。我发现'= INDEX(A48:E48,3,)'(注意尾随逗号)的确会导致#REF!错误。 (还要注意,所有的公式都是作为CSE的数组公式输入的。)我记下了所有这些内容,并希望能够全面描述这个函数的工作原理。 – vknowles