确定给定范围内的随机数

确定给定范围内的随机数

我有这张表,其中第一列只是一个标识符代码,第二列是范围。

在此处输入图片描述

例如,如果某个数字介于 0 到 1134 之间,则它对应于第一行“1310101”。如果它介于 1135 和 1311236 之间,则它对应于第二行,依此类推。

我想在 excel 中生成一个随机数RANDBETWEEN(1,6551654),然后识别该数字在“范围”列的哪个范围内,并返回标识符代码。因此,如果我得到例如 1000,我想要一些返回 1310101 的函数,因为我不想手动指定条件(我的表有 2000 多行)。

答案1

这个问题带来了两个挑战。首先,VLOOKUP 通常用于这种常规类型的查找,但它会在范围的最左侧列中进行搜索。其次,VLOOKUP 和 MATCH 等查找函数会查找小于或等于目标的最大值,如果该值与间隔边界不完全匹配,则会将您置于错误的间隔中。一种解决方案是使用 INDEX 和 MATCH 的组合来自由选择列,再加上间隔选择的变通方法。

假设您的输出值列表在 D 列中。公式需要多次引用同一个随机值,因此我们需要使用 C 列来创建将要使用的值。在 C 列中,根据需要在多个单元格中粘贴:

    =RANDBETWEEN(1,6551654)

D2 中的公式为:

    =INDEX(A$2:A$7,IF(ISERROR(MATCH(C2,B$2:B$7)),0,MATCH(C2,B$2:B$7))+IF(ISERROR((MATCH(C2,B$2:B$7,0))),1,0))

将其复制到 D 列,复制所需的数量。我这样编写公式是为了方便使用 LibreOffice Calc 等电子表格的人,这些电子表格缺少 IFERROR 函数。对于 Excel,您可以简化第一个 ISERROR 表达式:

    IF(ISERROR(MATCH(C2,B$2:B$7)),0,MATCH(C2,B$2:B$7))   would become:
    IFERROR(MATCH(C2,B$2:B$7),0)

INDEX 根据 MA​​TCH 结果从第一列(我假设是 A 列)中选择值。第一个 MATCH 结果是正常查找,如果值小于第一个间隔边界,则进行更正。如果与边界不完全匹配,则第二个 MATCH 结果会将其转移到下一个间隔。

相关内容