随机填写一个包含25个值的表,这些值来自一组30个值?

时间:2015-11-01 16:13:12

标签: excel

我想创建一系列表,每个表包含25个值,这些表来自一组30个值。我怎样才能快速,随机地制作这些表格?我想知道excel是否有办法,或者我需要自己编程吗?如果是这样,哪种语言最简单(Python,C,Java)?

编辑:25个值不包含重复。换句话说,我正在寻找值的随机组合(30C25)。

3 个答案:

答案 0 :(得分:0)

在Excel中以大于25的行(例如notifyObservers())命名您的30个值的列表,然后在A1中将其复制到A25并全部复制以适应:

List30

要排除重复(所以不是随机选择),您可以在A1:A30中输入您的列表,并在B1中复制以适应:

=INDEX(List30,RANDBETWEEN(1,30))  

然后在ColumnB上排序A:B并复制A1:A25以粘贴到D1。这样,一次只生成一个集合(每次粘贴后必须重复排序/复制/粘贴)。

答案 1 :(得分:0)

您最终可以添加以下自定义用户定义函数,然后将其用作数组公式。将代码添加到代码模块Module1:

Public Function RandUnique(src As Range) As Variant
    Dim v As Variant: v = src
    Randomize
    Dim i As Integer, j As Integer, temp As Variant
    For i = 1 To src.Rows.count
        j = 1 + Int(Rnd * src.Rows.count)
        temp = v(i, 1): v(i, 1) = v(j, 1): v(j, 1) = temp
    Next
    RandUnique = v
End Function

添加此UDF后,

Select the destination range, enter in the formula bar the following formula

=RandUnique($A$1:$A$30)     ' <~~ set it to your source range of 30 values

Then press Ctrl+Shift+Enter

请注意,所使用的随机化程序是相当基本的,因此并非所有组合都具有相同的概率,但它是公平的,除非您使用它进行深度统计分析,在这种情况下您可能需要一个完美的随机化器。

答案 2 :(得分:0)

这是一种有趣的方式,不需要VBA也不需要任何手动排序。

  • 在A1:A30。

  • 范围内输入您的来源清单
  • 在单元格B1中输入以下公式:

    =CHOOSE(RANDBETWEEN(1,7),7,11,13,17,19,23,29)

  • 在C1:C30范围内输入以下公式:

    =INDEX(A$1:A$30,MOD(ROWS(A$1:J1)*B$1,30))

  • 在单元格D1中输入以下公式:

    =RANDBETWEEN(1,30)

  • 现在选择任意25个连续的垂直和空单元格并输入以下公式:

    =INDEX($C$1:$C$30,MOD(D$1+ROWS($A$1:$J1),30)+1)

现在复制25个单元格并粘贴为第1个表格的值。按下键盘上的F9以获得新的25;复制并粘贴为第二个表的某个值。按下键盘上的F9以获得新的25;复制并粘贴为第3个表的某个值。根据需要不断重复多个表格。

请注意,虽然这看起来非常随机(没有重复),但它根本不是随机的。除非你是Rain Man,否则这是一个复杂的干涉模式,看起来是完全随机的。