我正在尝试从特定范围生成一个随机单元格:
我需要每个单元格行从特定列(范围)生成随机选择
下面是我的设置和失败尝试的图片:
你可以这样做:
=RAND()
。我用过 column B
,但你可以把它放在任何你喜欢的地方。将此公式添加到单元格C2
中H2
=INDEX($A$2:$A$21,RANK.EQ(INDEX($B$2:$B$21,COLUMN()-2),$B$2:$B$21))
这个怎么运作:
RAND()
返回范围内的随机数[0..1)
这用作数据的随机排序顺序COLUMN()-2
1..6
返回列C
的序号H
INDEX($B$2:$B$21, ... )
从随机数列表中返回1st
要数6th
RANK.EQ( ... ,$B$2:$B$21)
返回随机数在排序后的随机数列表中的位置,1..20
。=INDEX($A$2:$A$21, ... )
根据上面的随机排名从您的数据集中返回一个项目。注意:每次 Excel 重新计算时,这将返回一个新的随机样本。
进行不重复的随机选择的唯一方法是制作一个整数数组,然后将其随机化,然后一个一个取出。
例如,您从以下开始:
1 2 3 4 5 6 7
你随机化它(随机交换元素)
2 4 5 1 7 3 6
比你一个一个地取出元素。(保留您在某个单元格中使用了多少元素的索引)
好的,这是一个技巧,添加另一列随机数,而不是同时选择随机列和范围列并单击排序按钮(图片来自 libreoffice,但 excel 中有一个类似的按钮)这将随机化您的范围列。比你简单地为“w-1”赋值:“w-6”像这样=B2,=B3,=B4,=B5,=B6,=B7
我试过这个,它就像你想要的那样工作,唯一的问题是它会在你的范围列中随机排列值。