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

在这里输入图像说明

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

范围A4:A103是input向量(数字),范围C4:G23A4:A103行的给定(input)置换A4:A103 (必须是正整数,不大于input向量的长度) 。

让我们把排列matrix解释为一组行。

如何计算恒定数量的单元格中的每一行input向量中的最小数量? 通过单元的数量,我的意思是解决scheme,这将需要每行固定数量的单元格,而不pipe列的排列数。 (在生产环境中,每个维度都要大得多;排列matrix中有大约100个列。)

我不要求VBA解决scheme。 如果有必要,解决scheme可以使用一个免费的公开Excel Excel插件,比如MoreFunc,但是我更喜欢保留Excel 2007或更高版本。


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

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

INDEX以一些奇怪的方式工作!

通常INDEX不能返回一个数组 – 虽然你似乎发现了一个例外 – 当它是一个数组公式input一个范围。

你应该能够使用OFFSET来返回在MIN内工作的所需数组,即用这个公式

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

CTRL + SHIFT + ENTER确认