在列表中查找新号码的位置

Find location of NEW number in list

我正在寻找一种方法来查找 RAND() 数字在从 0 到 1 的无理数(实际上也是 RAND())列表中的位置。

所以我在 A1:A8

中有一个数字列表 0.1003、0.1984、0.3895、0.4506、0.4724、0.4856、0.5602、0.8542

然后我有一个 RAND() 号码要对照列表核对。现在我已经尝试 RANK.AV(RAND(),A1:A8),但是排名函数要求您的查找值在列表中。

一个简单的解决方案是将我的 RAND() 放在列表的底部 (A9) 并使用 RANK.AV(A9,A1:A9),所以我的号码 包含在列表中,但是我必须对我的数千兰特数字数组中的每个数字执行此操作,所以不切实际。

也许有一些方法可以将另一个单元格连接到一个数组中,而无需实际将其相邻放置?

例如,对于 B1 中的 RAND(),我可以在 C1 中编写:

=RANK.AV(B1,ARRAY.JOIN(A1:A8,B1)),但是我试了几种方法(&,+)都无法实现这个数组连接功能,所以我想我会寻求帮助!也许需要宏或 UDF?

这可以满足您的需要:

=RANK.AVG(INDEX(A1:A8,RANDBETWEEN(1,COUNT(A1:A8))),A1:A8)

这对随机数中的随机选择进行排名。

抱歉@Chris,我确定这就是您在评论中的意思:-

=IF(B1<A1,1,MATCH(B1,$A:$A)+1)

您的新随机数在 B1 中,您现有的列表在 A1:A10 中,按升序排序。如果新数字小于列表中的第一个条目,这将是一种特殊情况:否则,您可以通过在 A1 中放置一个零并将伪随机数向下移动来允许它,这将简化公式

=MATCH(B1,A:A)

如果你想允许领带,你可以更正它:-

=IF(B1<A1,1,MATCH(B1,$A:$A)+1)-COUNTIF($A:$A,B1)/2

或者只是

=MATCH(B1,$A:$A)-COUNTIF($A:$A,B1)/2

A1 中有一个零。

如果有 8 个数字,我假设排名是从 1=最小到 8=最大:您可以通过从 count(A$1:A$10)+2 或 count(A $1:A$10)+1 如果包含零。