永发信息网

EXCEL的VBA代码,求修改

答案:1  悬赏:70  手机版
解决时间 2021-03-31 18:14
  • 提问者网友:风月客
  • 2021-03-31 06:32
EXCEL的VBA代码,求修改
最佳答案
  • 五星知识达人网友:青尢
  • 2021-03-31 07:19
SHEET2.CELLS.CLEARCONTENTS
SHEET1.RANGE("A1:C1").COPY SHEET2.CELLS(1,1)
j=1
z=2
FOR i=2 TO CELLS(ROWS.COUNT,1).END(XLUP).ROW
SHEET1.RANGE("A"& i & ":C"& i).COPY SHEET2.CELLS(z,j)
z=z+1
IF MOD(i,43)=0 THEN
j=j+3
z=2
SHEET1.RANGE("A1:C1").COPY SHEET2.CELLS(1,j)
END IF
NEXT i

试一下,看有没有问题追问没开头的吗?还有IF MOD(i,43)=0 THEN标红追答IF MOD(i,43)=0 THEN
改为
IF i MOD 43 = 0 THEN

开头你补一个SUB TEST()
结尾补一个END SUB
这个随你,也许你放在按钮里,那么这个开头就不同了嘛。随你。追问我的天吖,你这代码变成全部都横行的写入啦
追答我知道为什么会这样了,你在sheet2中运行,要在sheet1中运行才行。
改一下,方面你在哪里运行都可以。
Sub test()
Dim i, j, z
Sheets(2).Cells.ClearContents
Sheets(1).Range("A1:C1").Copy Sheets(2).Cells(1, 1)
j = 1
z = 2
For i = 2 To Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
Sheets(1).Range("A" & i & ":C" & i).Copy _
Sheets(2).Cells(z, j)
z = z + 1
If i Mod 43 = 0 Then
j = j + 3
z = 2
Sheets(1).Range("A1:C1").Copy Sheets(2).Cells(1, j)
End If
Next i
End Sub追问这个差不多好了,不过这里需要修改下

出现这个第一列的44行没有,然后其他的都有,然后能不能让他们做下框架格式,这个效果

然后就是我测试发现,如果第一次数据长,然后后面的数据短,则触发后会这样

追答Sub test()
Dim i, j, z
Sheets(2).Cells.Clear
Sheets(1).Range("A1:C1").Copy Sheets(2).Cells(1, 1)
j = 1
z = 2
For i = 2 To Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
Sheets(1).Range("A" & i & ":C" & i).Copy _
Sheets(2).Cells(z, j)
z = z + 1
If (i-1) Mod 43 = 0 Then
j = j + 3
z = 2
Sheets(1).Range("A1:C1").Copy Sheets(2).Cells(1, j)
End If
Next i
Sheets(2).UsedRange.Borders.LineStyle = xlDash
End Sub
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯