我在Sheet2中有一组从第2列到第4列的值。我想在sheet3中随机生成这样的输出,并在sheet-2的每一列中包含我唯一的数据。我们可以在文本字符串之间生成随机值。
Sheet 2中:
Column 2 Column 3 Column 4
M 25 Agree
F 48 Agree
50 DisAgree
我想在sheet3中生成随机的120行数据,就像这样。
Column 2 Column3 Column4
M 25 Agree
F 48 DisAgree
M 48 Agree
M 50 DisAgree
.
.
.
.
M 25 Agree
要说清楚,
我有三列 - Column2,Column 3,Column4
在Sheet2中,仅存在唯一值。该列中的相同值将不存在。
在Sheet3中,例如,如果我们单独使用第2列。它必须具有从第2行到第121行的随机值,如M,F,F,M,F(随机直到第121行)。
请分享您的想法。
答案 0 :(得分:1)
您可以使用OFFSET
和RANDBETWEEN
功能。
例如:
=OFFSET(Sheet2!D$1,RANDBETWEEN(0,2),0)
这将选择0到2之间的随机数,然后选择Sheet2!D1下面多行的值。因此,如果生成的随机数为2,则返回“不同意”。
只需将RANDBETWEEN
函数的第二个参数设置为比可用选项数少一个。 (您可以通过使用类似COUNTA(Sheet2!D:D)-1
的内容作为第二个参数来概括。)
假设您的工作表在第1行中都有标题,因此您的数据从第2行开始,您可以在Sheet3!B2中使用以下公式并将其复制到Sheet3的整个范围!B2:D121
=OFFSET(Sheet2!B$2,RANDBETWEEN(0,COUNTA(Sheet2!B:B)-2),0)
答案 1 :(得分:1)
这将检查sheet2中的列以获取数据集计数,并为从中获取数据的行生成随机数。它将数据粘贴到Sheet3中。您可以修改for循环以获取要粘贴的数据集的数量和范围。
Sub Random()
Dim lr1, lr2, lr3 As Long
Dim r1, r2, r3 As Integer
Dim sht, sht2 As Worksheet
Set sht = Worksheets("Sheet2")
Set sht2 = Worksheets("Sheet3")
lr1 = sht.Cells(Rows.Count, 1).End(xlUp).Row
lr2 = sht.Cells(Rows.Count, 2).End(xlUp).Row
lr3 = sht.Cells(Rows.Count, 3).End(xlUp).Row
For i = 1 To 120
r1 = CInt((lr1 - 1 + 1) * Rnd()) + 1
r2 = CInt((lr2 - 1 + 1) * Rnd()) + 1
r3 = CInt((lr3 - 1 + 1) * Rnd()) + 1
sht2.Cells(i, 1).Value = sht.Cells(r1, 1).Value
sht2.Cells(i, 2).Value = sht.Cells(r2, 2).Value
sht2.Cells(i, 3).Value = sht.Cells(r3, 3).Value
Next i
End Sub