Excel 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

我已经编写了一个VBA代码(如下所示):

  • 从一张图纸中拾取并复制符合条件的行
  • 将这些行粘贴到不同的工作表中,但转换为列 e、 g.复制第1页中的A1:E1范围,并粘贴为第2页中的A1:A5,然后 复制表1中的A2:E2,并在表2中粘贴为B1:B5
  • 这段代码(几乎!)做到了它应该做的:它选择一行,将其复制为一列,但在每个复制位之间留下几十(如果不是更多)个空列

    我试图弄明白为什么不在没有空格的情况下一行一行地粘贴为列,但我不太擅长VBA,所以我很挣扎。我应该换什么?任何帮助都将不胜感激,谢谢

    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:我建议的一段代码没有解决您的问题吗?很抱歉回复稍晚,但它非常有用,非常感谢您花时间解释它!我按照你的建议修改了代码,效果不错。再次感谢你!