优先进行跟踪的屏幕截图
我在 A 列中有一组无序数据,我想从该集合中选择一个随机成员,然后使用它的值。我正在使用函数 =INDEX($A$2:$A$1001,RANDBETWEEN(2,1001),1),我的数据是数字,位于第 2 行到第 1001 行(数据中没有错误)。偶尔我会看到 #ref 错误。有谁知道如何修复这个问题或从列表中提取随机值的另一种方法。
答案1
INDEX 返回指定范围内的第 n 个值 (https://exceljet.net/functions/index-function),n 的值介于 2-1001 之间。范围内只有 1000 个单元格,因此当 RANDBETWEEN 生成 1001 并因此要求 INDEX 返回超出范围末尾的第 1001 个值时,会产生 REF 错误。
您的问题是您的范围和 RANDBETWEEN 值与您要执行的操作不匹配 - 这可以通过更改其中一个来解决 - RANDBETWEEN 1 和 1000;或者使您的索引范围包括 A1 而不是从 A2 开始。
我认为您可能将范围中的数字与行号混淆了 - 这提出了第三种解决方案的想法,即使用 INDIRECT 而不是 INDEX 来引用行号 - INDIRECT(“A”&RANDBETWEEN(2;1001)
答案2
欢迎!
这不是公式中唯一的错误 - 第二个错误并不那么明显。它在于你永远不会得到单元格的值A2(在截图中8.47)。 为了INDEX() 函数正常工作,随机数必须返回来自的数字1到<number of values>
,
在这种情况下1001-2+1=1000。
只需将公式改为=INDEX($A$2:$A$1001;RANDBETWEEN(1;1000);1)
或者你可以使用范围 $A$1:$A$1001 作为第一个参数,而不是 $A$2:$1001澳元
=INDEX($A$1:$A$1001;RANDBETWEEN(2;1001);1)