|
楼主 |
发表于 2017-2-16 23:09
|
显示全部楼层
Private Sub CommandButton4_Click()
Call CommandButton3_Click
'分五组
Do
a = 0
arr1 = [a1].Resize(Int(Rnd * (23 - 16) + 16))
a = UBound(arr1, 1)
arr2 = Cells(a + 1, "a").Resize(Int(Rnd * (23 - 16) + 16))
a = a + UBound(arr2, 1)
arr3 = Cells(a + 1, "a").Resize(Int(Rnd * (23 - 16) + 16))
a = a + UBound(arr3, 1)
arr4 = Cells(a + 1, "a").Resize(Int(Rnd * (23 - 16) + 16))
a = a + UBound(arr4, 1)
arr5 = Cells(a + 1, "a").Resize(Int(Rnd * (23 - 16) + 16))
a = a + UBound(arr5, 1)
Loop Until a = 100
' 正排
For j = 1 To UBound(arr1, 1)
For k = j To UBound(arr1, 1)
If arr1(j, 1) > arr1(k, 1) Then
t = arr1(j, 1): arr1(j, 1) = arr1(k, 1): arr1(k, 1) = t '交换
End If
Next k
Next j
For j = 1 To UBound(arr3, 1)
For k = j To UBound(arr3, 1)
If arr3(j, 1) > arr3(k, 1) Then
t = arr3(j, 1): arr3(j, 1) = arr3(k, 1): arr3(k, 1) = t '交换
End If
Next k
Next j
' 反排
For j = 1 To UBound(arr2, 1)
For k = j To UBound(arr2, 1)
If arr2(j, 1) < arr2(k, 1) Then
t = arr2(j, 1): arr2(j, 1) = arr2(k, 1): arr2(k, 1) = t '交换
End If
Next k
Next j
For j = 1 To UBound(arr4, 1)
For k = j To UBound(arr4, 1)
If arr4(j, 1) < arr4(k, 1) Then
t = arr4(j, 1): arr4(j, 1) = arr4(k, 1): arr4(k, 1) = t '交换
End If
Next k
Next j
' 第5组正排
For j = 1 To UBound(arr5, 1)
For k = j To UBound(arr5, 1)
If arr5(j, 1) > arr5(k, 1) Then
t = arr5(j, 1): arr5(j, 1) = arr5(k, 1): arr5(k, 1) = t '交换
End If
Next k
Next j
' 第5组分两小组
t1 = 1
t2 = 1
tt = Int(UBound(arr5, 1) / 2)
Dim arr51(), arr52()
ReDim Preserve arr51(1 To UBound(arr5, 1) - tt, 1 To 1)
ReDim Preserve arr52(1 To tt, 1 To 1)
For j = 1 To UBound(arr5, 1)
If j Mod 2 = 1 Then
arr51(t1, 1) = arr5(j, 1)
t1 = t1 + 1
Else
arr52(t2, 1) = arr5(j, 1)
t2 = t2 + 1
End If
Next j
' 双数组反排
For j = 1 To UBound(arr52, 1)
For k = j To UBound(arr52, 1)
If arr52(j, 1) < arr52(k, 1) Then
t = arr52(j, 1): arr52(j, 1) = arr52(k, 1): arr52(k, 1) = t '交换
End If
Next k
Next j
' 两小组合并
For j = 1 To UBound(arr51, 1)
arr5(j, 1) = arr51(j, 1)
Next j
For j = 1 To UBound(arr52, 1)
arr5(UBound(arr51, 1) + j, 1) = arr52(j, 1)
Next j
' 写入
Sheet1.Range("a1:e65535").ClearContents
[a1].Resize(UBound(arr1, 1)) = arr1
[b1].Resize(UBound(arr2, 1)) = arr2
[c1].Resize(UBound(arr3, 1)) = arr3
[d1].Resize(UBound(arr4, 1)) = arr4
[e1].Resize(UBound(arr5, 1)) = arr5
End Sub |
|