为什么这个数组公式不起作用?(Why this array formula doesn't

2019-10-18 22:55发布

上的图示的所有公式是数组。 每个公式跨越范围接壤,且每个块上的第一个公式是写在该块的顶部。

范围A4:A103是一个输入向量(其是数字),范围C4:G23是的行的给定(输入)置换A4: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。

Answer 1:

INDEX工作在一些奇特的方式!

通常情况下INDEX不能返回数组-但你似乎已经找到了一个例外-当它在一个范围内进入数组公式。

你应该能够使用OFFSET返回所需的阵列,将内工作MIN这个公式,即

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

使用Ctrl + Shift + Enter确认



文章来源: Why this array formula doesn't work?