本帖最后由 张雄友 于 2014-10-11 18:08 编辑
爱疯 发表于 2014-10-11 11:32
Sub test4()
Dim A, B, BT, r, c, i, j, k
Dim n
test4 代码实现的效果导致最后二个员工没有转换到。就是当数据不是整除时,最后有几个没有转换到。
Sub test4()
Dim A, B, BT, r, c, i, j, k
Dim n
Dim gl
Dim fz
Dim s '输出区的行数
Dim zu% '组的序号
Dim py '工作表列的偏移
n = 7 '【几人为一组】
fz = 2 '【输出去如果1组是1列,共有多少列】
gl = 1 '【每组之间隔几列】
Range("AW:IV").ClearContents
BT = [m2:p2]
A = Range("m3:p" & Range("m65536").End(xlUp).Row + n)
r = UBound(A): c = UBound(A, 2)
If r Mod n = 0 Then zu = r / n Else zu = r / n + 1
ReDim B(1 To zu * (n + 3), 1 To (c + gl) * fz - gl)
zu = 0: s = 1
For i = 1 To r - n Step n
zu = zu + 1
If zu Mod fz = 1 Then py = 0
'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
For j = 1 To c
'B(组的基 + 本组已用行数 + 行的偏移,列 + 工作表列的偏移)
B(s + 1 + k, j + py) = A(i + k - 1, j)
Next j
Next k
py = py + c + gl
If zu Mod fz = 0 Then s = s + n + 3
Next i
[aw2].Resize(s, UBound(B, 2)) = B
End Sub
|