我工作的随机数VBA和下面的代码从挑选和Sheet2的副本名称表1,我可以重复这些步骤来接从该列表3个不同的名称。如果三个连续的行都是三个连续的行,但这些代码在第5行,第10行和第15行中没有选择3个不同的名称,那么这个代码做得很好。有人可以帮我挑三个不同的名字,并将它们放在相距5行的行中吗? (第一行第一名,第五行第二名,第十五行第三名)我是VBA新手!输出随机数在三个不同的行
Sub DDQ1()
Application.ScreenUpdating = False
Dim source, destination As Range
Set source = Sheets("sheet2").Range("A60:A81")
Sheets("sheet1").Activate
Set destination = ActiveSheet.Range("B53")
ReDim randoms(1 To source.Rows.Count)
destrow = 0
For i = 1 To destination.Rows.Count
If destination(i) = "" Then: destrow = i: Exit For
Next i
If destrow = 0 Then: MsgBox "no more room in destination range": Exit Sub
For i = 1 To UBound(randoms): randoms(i) = Rnd(): Next i
ipick = 0: tries = 0
Do While ipick = 0 And tries < UBound(randoms)
tries = tries + 1
minrnd = WorksheetFunction.Min(randoms)
For i = 1 To UBound(randoms)
If randoms(i) = minrnd Then
picked_before = False
For j = 1 To destrow - 1
If source(i) = destination(j) Then: picked_before = True: randoms(i) = 2: Exit For
Next j
If Not picked_before Then: ipick = i
Exit For
End If
Next i
Loop
If ipick = 0 Then: MsgBox "no more unique name possible to pick": Exit Sub
destination(destrow) = source(ipick)
Application.ScreenUpdating = True
End Sub
不回答你的问题,而是'点心源,目的地Range'将目的地的范围内,但消息人士的变种。你需要'Dim source作为Range,destination As Range' – jcarroll
这里有一点小小的格式化。 – RBarryYoung