'1楼附件,,,
Option Explicit
Sub test()
Dim arr, crr, i, j, k, kk, m, s
arr = [g5:n24].Value
ReDim cnt(1 To 4), brr(10 ^ 4, 1 To 4) As String
For j = 1 To 4
For i = 1 To UBound(arr, 1)
arr(i, j) = arr(i, 2 * j - 1)
Next
For i = 1 To UBound(arr, 1)
If Len(arr(i, j)) Then
m = m + 1: arr(m, j) = arr(i, j)
If m <> i Then arr(i, j) = vbNullString
End If
Next
cnt(j) = m: m = 0
Next
For i = 1 To 4
brr(0, i) = arr(1, i)
Next
m = 0: s = [j28].Value: crr = brr
For i = 2 To cnt(1)
For j = i To cnt(2)
For k = j To cnt(3)
For kk = k To cnt(4)
m = m + 1
brr(m, 1) = arr(i, 1): brr(m, 2) = arr(j, 2)
brr(m, 3) = arr(k, 3): brr(m, 4) = arr(kk, 4)
crr(m, 1) = s & brr(0, 1) & brr(m, 1)
crr(m, 2) = s & brr(0, 2) & brr(m, 2)
crr(m, 3) = s & brr(0, 3) & brr(m, 3)
crr(m, 4) = s & brr(0, 4) & brr(m, 4)
Next
Next
Next
Next
With [e29]
.Resize(UBound(brr, 1), 2 * 4 + 1).ClearContents
.Resize(m + 1, 4) = brr
.Offset(, 4 + 1).Resize(m + 1, 4) = crr
End With
End Sub |