Sub test5()
Dim A, B, BT, r%, c, i, j, k
Dim n '【几人为一组】
Dim t '【输出区以1组为1条,共几条】
Dim g '【每组之间隔几列】
Dim s '输出区的行数
Dim zu% '组的序号
Dim py '工作表列的偏移
n = 7
t = 3
g = 2
Range("AW:IV").ClearContents
r = Range("m65536").End(xlUp).Row - 2
If r Mod n = 0 Then
zu = r / n
Else
zu = r / n + 1
End If
r = zu * n '让成员的个数,补充为n的倍数
BT = [m2:p2]
A = Range("m3:p" & r + 2)
c = UBound(A, 2)
ReDim B(1 To zu * (n + 3), 1 To (c + g) * t - g) '3 = 序号占1行+标题占1行+空行占1行
zu = 0: s = 1
For i = 1 To r - n + 1 Step n '从第1组第1行,到最后1组第1行
zu = zu + 1
If zu Mod t = 1 Then py = 0 '如果组在第1条,就没有组列的偏移
'1)序号
B(s, c + py) = zu
'2)标题
For j = 1 To c
B(s + 1, j + py) = BT(1, j)
Next j
'3)组中的人员
For k = 1 To n '从组里的第1个成员,到组里的第n个成员
For j = 1 To c
'B(组的基 + 本组已用行数 + 行的偏移,列 + 工作表列的偏移)
B(s + 1 + k, j + py) = A(i + k - 1, j)
Next j
Next k
py = py + c + g '相对输出区的第1列的偏移量
If zu Mod t = 0 Then s = s + n + 3 '如果组在最后1条,就增加组的基数
Next i
[aw2].Resize(UBound(B), UBound(B, 2)) = B
End Sub