数组洗牌法提取不重复随机数
Function getRandDigit() '
arr = GetRnd(1, 13137, 13137)
getRandDigit = arr
' Sheets("Sheet1").Range("M2").Resize(UBound(arr)) = Application.Transpose(arr)
End Function
Function GetRnd(a&, b&, n&) '数组洗牌法提取不重复随机数
Dim i&, m&, r&, t
ReDim ar&(a To b), br(n - 1)
For i = a To b
ar(i) = i
Next
m = b - a + 1
Randomize
For i = 0 To n - 1
r = Int(Rnd * (m - i)) + i + a
t = ar(r): ar(r) = ar(i + a): ar(i + a) = t: br(i) = t
Next
GetRnd = br
End Function
Sub 模板序号() '
arr = GetRnd(1, 41, 41)
Sheets("模板").Range("h2").Resize(UBound(arr)) = Application.Transpose(arr)
End Sub
Sub getSrcData()
With Sheets("模板")
ar = .Range("a2:g41")
End With
With Sheets("Sheet1")
maxrow = .Cells(.Rows.Count, 1).End(xlUp).Row
While lastRow < maxrow
lastRow = .Cells(.Rows.Count, 5).End(xlUp).Row
lastRow = lastRow + 1
.Cells(lastRow, 5).Resize(UBound(ar), 7) = ar
Wend
End With
End Sub