Option Explicit
Sub test2()
Dim ar, i&, iNumber&
With Sheets(1).[A1].CurrentRegion
ar = Intersect(.Offset(), .Offset(1)).Value
End With
iNumber = Application.InputBox("请抽取行数", Title:="提示", Default:=50, Type:=1)
If iNumber < 1 Or iNumber > UBound(ar) Then Exit Sub
Application.ScreenUpdating = False
arrGetRnd2 ar
[A1].CurrentRegion.Offset(1).ClearContents
[A2].Resize(iNumber, UBound(ar, 2)) = ar
Application.ScreenUpdating = True
Beep
End Sub
Function arrGetRnd2(ByRef ar, Optional ByVal isCol As Boolean)
Dim xNum&, i&, j&, m&, n&, vTemp
Randomize
m = UBound(ar): n = UBound(ar, 2)
If isCol Then vTemp = m: m = n: n = vTemp
For i = 1 To m
xNum = Int((m - i + 1) * Rnd() + i)
For j = 1 To n
If isCol Then
vTemp = ar(j, xNum): ar(j, xNum) = ar(j, i): ar(j, i) = vTemp
Else
vTemp = ar(xNum, j): ar(xNum, j) = ar(i, j): ar(i, j) = vTemp
End If
Next
Next
End Function
|