Excel VBA:复制行和转置到列时留下的空间太多
我已经编写了一个VBA代码(如下所示):Excel VBA:复制行和转置到列时留下的空间太多,excel,vba,transpose,Excel,Vba,Transpose,我已经编写了一个VBA代码(如下所示): 从一张图纸中拾取并复制符合条件的行 将这些行粘贴到不同的工作表中,但转换为列 e、 g.复制第1页中的A1:E1范围,并粘贴为第2页中的A1:A5,然后 复制表1中的A2:E2,并在表2中粘贴为B1:B5 这段代码(几乎!)做到了它应该做的:它选择一行,将其复制为一列,但在每个复制位之间留下几十(如果不是更多)个空列 我试图弄明白为什么不在没有空格的情况下一行一行地粘贴为列,但我不太擅长VBA,所以我很挣扎。我应该换什么?任何帮助都将不胜感激,谢谢 A
A = Worksheets("TO BE").Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To A
If Worksheets("TO BE").Range("D" & i).Value = "7" Then
Worksheets("TO BE").Range("A" & i & ":E" & i).Copy
Worksheets("GRADE 7 MATRIX").Activate
b = Worksheets("GRADE 7 MATRIX").Cells(1, Columns.Count).End(xlToLeft).Column
Worksheets("GRADE 7 MATRIX").Cells(1 & b + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=True
End If
Next
Application.CutCopyMode = False
单元格(1&b+1)
应该是单元格(1,b+1)
,您需要指定行和列。我想你想粘贴在第一行的第一个空列上。。。否则,代码将返回通过将1与b+1
串联而获得的单元格列。如果b
为8,则该列将为18。对于20=>120,依此类推。它只是碰巧粘贴在第一行,而不是通过您的代码“告诉”。。。只有在16384(总列数)之后,它才会到达第二行
然后,您不能选择/激活任何内容。当条件为True
时,您的代码(工作更快、更稳定)应为:
Worksheets("TO BE").Range("A" & i & ":E" & i).Copy
b = Worksheets("GRADE 7 MATRIX").Cells(1, Columns.Count).End(xlToLeft).Column
Worksheets("GRADE 7 MATRIX").Cells(1, b + 1).PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=True
Cells(1&b+1)
应该是Cells(1,b+1)
@SlothLyfe:我建议的一段代码没有解决您的问题吗?很抱歉回复稍晚,但它非常有用,非常感谢您花时间解释它!我按照你的建议修改了代码,效果不错。再次感谢你!