我坚持使用excel / vba:
我在Excel中有一个10行x 30列空白数组。我试图从一个已知的10个组(比如1,1,1,1,1,1,3,5,7,9)中随机分配10个整数到每列中,以便列的每一行包含一个组(并且所有组成员都使用一次),我需要第二列包含同一组的另一个随机分布,依此类推。
所以我最终会得到30列,每列10行,每列包含相同10个整数的不同随机分布。我希望能够通过重新计算电子表格来更改每行的分布。
有快速的方法吗?如果没有排列30个不同的rand()排序列表并使用查找,我就看不到任何方法。我对VBA不够精明。如果有人能指出我正确的方向,我将永远感激不尽!
答案 0 :(得分:0)
您可以创建一个循环,在其中使用10个数字创建数组。然后循环30列,首先将10个随机抽取数字的另一列添加到数组中。见this website on how to draw random numbers。然后对第二列上的数组进行排序并发布第一列。
编辑:
正如我在其他答案的评论中所读到的那样,纯粹的解决方案是:
EDIT2:
一旦我点击帖子,我就会更多地思考这个问题并得出结论,在这种情况下,最后一位数字总是为1 ....
答案 1 :(得分:0)
也许我错过了一些明显的东西,尽管单独使用工作表公式似乎并不那么简单。
如果您的原始值列表在A1:A10中,则在B1:
中 =INDEX($A$1:$A$10,RANDBETWEEN(1,10))
,在B2中,数组公式** :
=INDEX($A$1:$A$10,INDEX(MODE.MULT(IF(COUNTIF($A$1:$A$10,$A$1:$A$10)-COUNTIF(B$1:B1,$A$1:$A$10),{1,1}*ROW($A$1:$A$10))),RANDBETWEEN(1,10-ROWS($1:1))))
将上述内容复制到B10。
然后,您可以根据需要将B1:B10中的公式复制到右侧。
此致
**数组公式的输入方式与“标准”公式的输入方式不同。您只需按住CTRL和SHIFT键,然后按ENTER键,而不是按ENTER键。如果你已经正确地完成了它,你会注意到Excel在公式周围放置了大括号{}(虽然不要尝试自己手动插入这些)。