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