我想创建一系列表,每个表包含25个值,这些表来自一组30个值。我怎样才能快速,随机地制作这些表格?我想知道excel是否有办法,或者我需要自己编程吗?如果是这样,哪种语言最简单(Python,C,Java)?
编辑:25个值不包含重复。换句话说,我正在寻找值的随机组合(30C25)。
答案 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,否则这是一个复杂的干涉模式,看起来是完全随机的。