Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从一列复制数据,粘贴到第一个空列_Excel_Copy Paste_Vba - Fatal编程技术网

Excel 从一列复制数据,粘贴到第一个空列

Excel 从一列复制数据,粘贴到第一个空列,excel,copy-paste,vba,Excel,Copy Paste,Vba,我在H2列中有数据。我想把它们复制到同一个电子表格的其他地方。 但在我复制的地方,它会一次更改一列,因为下面的每一列都会被宏填充 我的现有宏已成功搜索此列数据,并将其粘贴到下面的空列中,如B31。当我有10个新的数据块时,下次运行宏时,我希望它下次粘贴到C31中的C列(下一个空行),D31……等等。。我的宏反复获取H2:H11中的数据并将其粘贴到B31中,但每次再次运行宏时都会覆盖该列。通过在…之前运行宏,它不会“看到”B列已经有数据放在那里。。。。代码有什么问题 Range("H2:H11")

我在H2列中有数据。我想把它们复制到同一个电子表格的其他地方。 但在我复制的地方,它会一次更改一列,因为下面的每一列都会被宏填充

我的现有宏已成功搜索此列数据,并将其粘贴到下面的空列中,如B31。当我有10个新的数据块时,下次运行宏时,我希望它下次粘贴到C31中的C列(下一个空行),D31……等等。。我的宏反复获取H2:H11中的数据并将其粘贴到B31中,但每次再次运行宏时都会覆盖该列。通过在…之前运行宏,它不会“看到”B列已经有数据放在那里。。。。代码有什么问题

Range("H2:H11").Select Selection.Copy
Range("A31").Select
Range("A31:M31").End(xlToLeft).Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
ActiveCell.Rows("1:10").EntireRow.Select
Application.CutCopyMode = False
应该是

Range("M31").End(xlToLeft).Offset(0, 1).Select
替代解决方案如下(对不起,我没有测试,因为我不在MS PC上)


在第一次通过后,B31中是否有数据?如果您愿意,我可以发布另一个解决方案。是的,B31不断将新数据放入其中,覆盖以前的数据。仅供参考,A31包含“标题”信息,因此它从A31开始,看到它不是空的,移动到一个单元格上并粘贴,即使它不是空的。。也发布替代解决方案!尝试Range(“M31”).End(xlToLeft)。Offset(0,1)。选择,如果不起作用,我不确定代码为什么不起作用。我的方法可能不是最好的方法,但我尽量避免在宏中复制和粘贴。简短的一行解决方案修复了它。。。非常感谢。
Range("M31").End(xlToLeft).Offset(0, 1).Select
dim lRow as Long  'Output Row
lRow = 31         'Start at row 31

    For i = 2 to 13 'Column B to Column M

         'Count if there is any values in the columns 
         '(if there is a header then change the 0 to 1)

        If Application.WorksheetFunction.CountA(ActiveSheet.Columns(i)) = 0 Then

            For Each c in Range("H2:H11")  'Cycle through output values

            ActiveSheet.Cells(lRow, i).value = c.Value  'Assign values

            lRow = lRow + 1   'Increment row number

            next c

        exit for   'exit column loop

        end if

    next i