【问题标题】:Random Numbers to select from two tables in Excel从 Excel 中的两个表中选择的随机数
【发布时间】:2025-12-15 18:35:01
【问题描述】:

我想从 excel 的两个表中随机选择一个数字,但是当我使用 RAND() OR RANDBETWEEN() 函数时它不起作用。表格如下。

表一:

年费用
1 700,000.00 英镑

2 717,500.00 英镑

3 735,437.50 英镑

4 753,823.44 英镑

5 英镑 772,669.02

6 791,985.75 英镑

7 英镑 811,785.39

8 英镑 832,080.03

9 英镑 852,882.03

10 英镑 874,204.08

表 2:

年费用

3 英镑 800,000.00

4 英镑 828,000.00

5 英镑 856,980.00

6 英镑 886,974.30

7 英镑 918,018.40

8 英镑 950,149.04

9 英镑 983,404.26

10 英镑 1,017,823.41

11 英镑 1,053,447.23

12 英镑 1,090,317.88

【问题讨论】:

  • 我才发现表 2 没有 #1 或 #2...这是故意的吗?
  • 另一件需要注意的是概率。如果您希望每个号码具有相同的被选中概率,或者如果您希望任一表被选中的概率相等。仅当两个表的大小不同时才会出现此问题。

标签: excel excel-formula


【解决方案1】:

RANDRANDBETWEEN 只是选择一个随机的数字,但您仍然必须使用INDEX 才能实际获得一个范围内的值。

例如,要随机选择单元格 A1:A10 中的值之一,请执行以下操作:

= INDEX(A1:A10,RANDBETWEEN(1,10))

更一般地说,您可以这样做:

= INDEX(A1:A10,RANDBETWEEN(1,ROWS(A1:A10)))

【讨论】:

    【解决方案2】:

    C1:C10 & D1:D12 列表中随机单元格的一个值:

    =IF(RANDBETWEEN(1,22)<=10, 
         "Table1: #" & INDEX($C$1:$C$10,RANDBETWEEN(1,10)),
         "Table2: #" & INDEX($D$1:$DB$12,RANDBETWEEN(1,12)))
    

    或者在 VBA 中:

    MsgBox Range(IIf(Int(Rnd() * 22) + 1 <= 10, "C" & Int(Rnd() * 10) + 1, 
        "D" & Int(Rnd() * 12) + 1)).Value
    

    【讨论】:

    • 您的if包含一个额外的i?此外,您在这里的结果只会返回一个表号和一个随机索引号,实际上不会返回表中的值。例如,您的公式将返回 Table1: #1 而不是 700,000
    • 为什么你的公式中还有"Table1: #"&amp;?将它与INDEX 结合起来对我来说没有多大意义,因为现在您的结果将返回Table1: #700000。我解释这个问题的方式,OP 只想要严格的表中的值,而不是前面的额外文本。只是我的解释
    • 因此,如果 OP 选择不包含表号,则 OP 不必包含表号。
    • @ImaginaryHuman072889 -- IIf = 是“内联 If”,可用于 VBA 和 Access 查询。
    • @pnuts - 我的立场是正确的 - 但在快速检查时它很接近,看起来 40% 的人将其称为“inline”(尽管突然“immediate”背后的推理也有道理) 谢谢!