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

时间:2012-05-04 17:07:52

标签: excel excel-vba copy-paste vba

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

我现有的宏成功搜索并将此列数据粘贴到下面的空列中,例如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

1 个答案:

答案 0 :(得分:1)

Range("A31:M31").End(xlToLeft).Offset(0, 1).Select    

应该是

Range("M31").End(xlToLeft).Offset(0, 1).Select

替代解决方案如下(我没有测试过,因为我不在我的MS PC上,抱歉)

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