为什么这个数组公式不起作用?

时间:2013-11-06 18:48:07

标签: excel excel-formula

enter image description here

在插图中,所有公式都是数组。每个公式跨越的范围是有界的,每个块上的第一个公式都写在该块的顶部。

范围A4:A103是输入向量(是数字),范围C4:G23A4:A103行的给定(输入)排列(必须是正非零整数)大于输入向量的长度。)

让我们将排列矩阵解释为行集。

如何在恒定数量的单元格中计算每行 输入向量中的最小数量?通过恒定数量的单元格,我的意思是解决方案,那就是无论排列中的列数是多少,每行都需要固定数量的单元格。 (在生产情况下,每个维度都要大得多;排列矩阵中大约有100列。)

我不要求VBA解决方案。如果有必要,解决方案可以使用免费和公开的Excel附加组件,如MoreFunc,但我更喜欢保留它香草Excel 2007或更高版本。


我认为公式{=MIN(INDEX(INDIRECT($A$2);$C4:$G4))}可以解决我的问题。令人惊讶的是,Excel似乎没有考虑公式的数组性质,并将其评估为好像它被写为=MIN(INDEX(INDIRECT($A$2);$C4),这相当于功能失调=INDEX(INDIRECT($A$2);$C4)

另一方面,我们可以看到MIN的参数被理解为I4:M4范围内的数组。

1 个答案:

答案 0 :(得分:3)

INDEX以某种奇怪的方式运作!

通常INDEX不能返回一个数组 - 尽管你似乎找到了一个例外 - 当它是在一个范围内输入的数组公式时。

您应该可以使用OFFSET返回MIN内所需的数组,即使用此公式

=MIN(N(OFFSET(INDIRECT($A$2);$C4:$G4-1;0)))

使用 CTRL + SHIFT + ENTER确认