Arrays 如何在需要数组的函数中使用计算值

Arrays 如何在需要数组的函数中使用计算值,arrays,excel,Arrays,Excel,有一个叫做SMALL的简便Excel函数,可以让您从数组中找到第n个最小值。例如:SMALL({35;10;5000;6},2)=10,集合中第二小的数字 您可以通过引用单元格数组(SMALL(A1:A10,2))来使用此函数,也可以直接在公式中写入常量值数组(SMALL({1;2;3},2)) 有没有办法直接在公式中写入计算值数组?如果使用RAND生成值,它应该是这样的: SMALL({RAND();RAND();RAND()},2) 但Excel不允许这样 如何在另一个需要数组(如SMA

有一个叫做
SMALL
的简便Excel函数,可以让您从数组中找到第n个最小值。例如:
SMALL({35;10;5000;6},2)
=
10
,集合中第二小的数字

您可以通过引用单元格数组(
SMALL(A1:A10,2)
)来使用此函数,也可以直接在公式中写入常量值数组(
SMALL({1;2;3},2)

有没有办法直接在公式中写入计算值数组?如果使用
RAND
生成值,它应该是这样的:

 SMALL({RAND();RAND();RAND()},2)
但Excel不允许这样

如何在另一个需要数组(如
SMALL
)的函数中使用函数(如
RAND



是的,我知道通常的解决方案是将计算出的值放入各自的单元格中,然后将该数组用作
SMALL
的输入。如果我能在一个单元格内完成这一切,那就太好了。

您可能知道,一般的答案是您将使用

用RAND()来说明这一点有点困难,但如果使用更普通的函数,如SQRT,其用法将是

=SMALL(SQRT({9,4,1}),1)
因此,您不是向SQRT提供单个参数,而是提供一个参数列表,它将一次处理一个参数,并返回一个由3个元素{3,2,1}组成的数组,该数组将传递给SMALL进行计算

如果(比如)A1:A3中有相同的数字列表,则需要使用CtrlShift enter将其作为数组公式输入

但正如@Jeeped所指出的,使用聚合通常更方便

=AGGREGATE(15,6,SQRT(A1:A3),1)
据我所知,您不能用RAND重现这种行为,因为它是为数不多的不带参数的Excel函数之一


如果您确实想生成一个随机数r数组,其中0自xl2010起,有一个名为“聚合”的简便函数,可通过psuedo数组处理(如SUMPRODUCT)复制较小的值,并允许丢弃错误和/或隐藏的单元格。顺便说一句,您可能会发现极值(Who S1006博士)有意思。你为什么不能用RAND函数来使用一系列单元格并从中得到小的?jkpieterse,我正在处理的电子表格有一个相当复杂的结构。如果这项任务可以在一个单元格中完成,那就容易多了。我理解,但在一个单元格中完成所有工作并不一定有助于弄清楚电子表格中的内容:-)您可以随时添加一张表格来保存兰德的。
=AGGREGATE(15,6,SQRT(A1:A3),1)
=SMALL((RANDBETWEEN({0,0,0},10^20-1)/10^20),1)