|
本帖最后由 hasyh2008 于 2022-6-14 06:34 编辑
Sub tt()
Dim Arr, Brr(), Rc%, K%, X%, Y%, Num, Str$, I%
Dim Gs%, Avg As Single, T As Single
T = Timer
With ActiveSheet
Rc = .Range("A1").CurrentRegion.Rows.Count
.Range("B2").Resize(Rc - 1, 2) = ""
Arr = .Range("A2:A" & Rc)
Gs = Int(UBound(Arr) * .Cells(2, 6))
Avg = Application.Average(Arr)
ReDim Brr(1 To Gs)
I = 0
100:
For X = 1 To Gs
Rc = UBound(Arr) - X + 1
K = Int(Rnd() * Rc) + 1
Brr(X) = Arr(K, 1)
Num = Arr(Rc, 1)
Arr(Rc, 1) = Arr(K, 1)
Arr(K, 1) = Num
Next X
If Application.Average(Brr) / Avg > 0.999 And Application.Average(Brr) / Avg < 1.001 Then
.Cells(2, 1).Resize(Gs) = Application.Transpose(Brr)
.Cells(2, 2).Resize(Gs) = "A"
.Cells(Gs + 2, 1).Resize(UBound(Arr) - Gs) = Arr
.Cells(Gs + 2, 2).Resize(UBound(Arr) - Gs) = "B"
MsgBox "已分配完毕!"
MsgBox "运行次数:" & I + 1
MsgBox "用时:" & Format(Timer - T, "0.00")
Exit Sub
Else
I = I + 1
GoTo 100
End If
End With
End Sub |
|