Excel 从一组30个值中随机填写25个值的表格?
我想制作一系列表,每个表包含25个值,这些值来自一组30个值。如何快速、随机地生成这些表?我想知道excel中是否有方法,或者我是否需要自己编程?如果是,哪种语言最简单(Python、C、Java)Excel 从一组30个值中随机填写25个值的表格?,excel,Excel,我想制作一系列表,每个表包含25个值,这些值来自一组30个值。如何快速、随机地生成这些表?我想知道excel中是否有方法,或者我是否需要自己编程?如果是,哪种语言最简单(Python、C、Java) 编辑:25个值将不包括重复。换句话说,我正在寻找值的随机组合(30C25)。在Excel中列出30个值的列表,行数大于25(比如List30),然后在A1中复制到A25,并全部复制以适应: =INDEX(List30,RANDBETWEEN(1,30)) =RAND() 要排除重复(因此
编辑:25个值将不包括重复。换句话说,我正在寻找值的随机组合(30C25)。在Excel中列出30个值的列表,行数大于25(比如
List30
),然后在A1中复制到A25,并全部复制以适应:
=INDEX(List30,RANDBETWEEN(1,30))
=RAND()
要排除重复(因此不是随机选择),您可以在A1:A30和B1中输入您的列表,并复制以适应:
=INDEX(List30,RANDBETWEEN(1,30))
=RAND()
然后对B列上的A:B进行排序,并复制A1:A25以将say粘贴到D1。这样一次只生成一个集合(每次粘贴后必须重复排序/复制/粘贴) 您最终可以添加以下自定义用户定义函数,然后将其用作数组公式。将代码添加到代码模块模块1:
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
添加此自定义项后
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
选择目标范围,在公式栏中输入以下公式
=RandUnique($A$1:$A$30)这里有一个有趣的方法,它不需要VBA,也不需要任何手动排序
- 在A1:A30范围内输入源列表
- 在单元格B1中输入以下公式:
=选择(介于(1,7),7,11,13,17,19,23,29之间)
- 在C1:C30范围内输入以下公式:
=索引(A$1:A$30,MOD(行(A$1:J1)*B$1,30))
- 在单元格D1中输入以下公式:
=RANDBETWEEN(1,30)
- 现在选择任意25个连续的垂直和空单元格,并输入以下公式:
=索引($C$1:$C$30,MOD(D$1+行($A$1:$J1),30)+1)
现在复制25个单元格并粘贴为第一个表的某个位置的值。按键盘上的F9键,获得一个新的25;复制并粘贴为第二个表的某个位置的值。按键盘上的F9键,获得一个新的25;复制并粘贴为第三个表的某个位置的值。根据需要不断重复多张表
请注意,虽然这看起来非常随机(没有重复),但它根本不是随机的。这是一个复杂的干扰模式,除非您是唯一的干扰模式,否则它将完全随机出现。这25个值必须不同吗?(不允许重复?)是的,这是需要的。在这种情况下,我认为你应该使用一些编程。带VBA的自定义项是一个很好的选择,非常感谢!有并没有一种方法可以避免重复的随机输入,我只是得到30个值的随机组合?(30C25)?您可以将上述内容与来自的一些VBA结合使用。请参阅页面的“获取唯一、非重复值数组”部分。非常感谢。就我的项目而言,它不一定是真正随机的,因为值需要看起来是随机的,所以这就足够了。非常感谢您的时间和帮助。非常感谢您的帮助。这非常有效,而且您的指示很容易遵循。我感谢你花时间帮我解决问题。