索引函数在合并 randbetween 函数时偶尔会出现 #ref 错误

索引函数在合并 randbetween 函数时偶尔会出现 #ref 错误

优先进行跟踪的屏幕截图

我在 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)

相关内容