如何随机使用Excel / VBA将已知的一组数字分配到列中

我坚持与Excel / VBA:

Excel中有10行x 30列的空白数组。 我试图从10个已知的组中分配10个整数(比如1,1,1,1,1,1,3,5,7,9)到每个列中,使得列的每一行都包含一个组(所有组成员都使用一次),我需要第二列包含同一组的另一个随机分布,依此类推。

所以我最终会得到30列10行,每列包含一个不同的随机分布相同的10个整数。 我希望能够通过重新计算电子表格来改变每一行的分布。

有没有一个快速的方法来做到这一点? 安排30个不同的rand()sorting列表和使用查找的短缺我看不到一个方法。 我对VBA不够了解。 如果有人能把我指向正确的方向,我会永远感激!

也许我错过了一些显而易见的东西,尽pipe这似乎并不是那么单纯的使用工作表公式。

如果您的原始值列表在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中的公式复制到右侧。

问候

**数组公式不是以与“标准”公式相同的方式input的。 按住CTRL键和SHIFT键,而不是按下ENTER键,然后按ENTER键。 如果你做得对,你会注意到Excel在公式周围放置了大括号(尽pipe不要试图自己手动插入这些)。

你可以做一个循环,你用10个数字组成一个数组。 然后循环30列,首先向您的数组中添加另一列10个随机绘制的数字。 看到这个网站上如何绘制随机数字 。 然后对第二列中的数组进行sorting并发布第一列。

编辑:

当我在对另一个答案的评论中看到,纯粹的解决scheme将是:

  1. 将值的每个唯一选项分配一个随机值
  2. 从上到下或从下到上sorting这些随机值,并select最上面的一个。
  3. 把它放在第一行
  4. 第二行再次做同样的事情,但跟踪所有的独特选项的总和,以排除一个选项,一旦它最大的存在。

EDIT2:

一旦我只是点击后,我认为这一点通过,并得出结论,在这种情况下,最后一位数字将总是1 …