Sub 生成不重复随机数()
Dim i As Long, j As Long
For i = 4 To 13 '在4-13列循环
j = Int(1 + Rnd() * 17) 'rnd()产生1-18之间的随机数,并赋值给j变量
Cells(5, i) = j '将j变量赋值给第五行,第(4-13)列所在单元格
If Application.WorksheetFunction.CountIf(Range("D5:M5"), j) > 1 Then i = i - 1 '如果在D5:M5之间发现有重复值,i列-1
Next '下一列(当有重复值时候,这里的i+1与上面的 i-1正好抵消,也就是重新赋值一个随机数给那个有重复值的单元格。
End Sub
Int(1 + Rnd() * 17) 是随机的区间,这个和你用excel函数的int(1+rand()*17)一样的。
i=4 to 13 你可以改成你实际需要的列