复制另一个工作表中的特定列,当您运行宏时,它会向右移动列

时间:2014-03-28 14:47:35

标签: vba loops copy paste

我需要一些帮助,因为我遇到了一个问题,对VBA来说还是个新手。我想从L5-L18复制该数据,不包括一些单元格并将其粘贴到工作表的列B(In)并创建一个按钮,每次我按下它以将数据从B列,工作表(数据)复制到工作表(in)并向右移动columnto。像第一次列b,下次列c ...每次按下按钮...非常感谢

Sub Macro2()
 Sheets("Data").Select

 Range("L5,L6,L7,L8,L9,L10,L13,L14,L15,L16,L17,L18").Select

 Range("L18").Activate

Selection.Copy

 Sheets("In").Select

 Range("B5").Select

ActiveSheet.Paste

 Range("B5").Offset(0, 1).Select

End Sub

2 个答案:

答案 0 :(得分:0)

方法A

要插入B列并将其他所有内容移至右侧,请尝试以下操作:

Sub offsetCol()
    Dim wksData As Worksheet
    Set wksData = Sheets("Data")

    Dim wksIn As Worksheet
    Set wksIn = Sheets("In")

    Application.CutCopyMode = False
    Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

    wksIn.Range("B5:B10").Value = wksData.Range("L5:L10").Value
    wksIn.Range("B11:B16").Value = wksData.Range("L13:L18").Value
End Sub

方法B

查找表格的最后一栏,并将信息提供给下一个可用的信息:

Sub offsetCol()
    Dim wksData As Worksheet
    Set wksData = Sheets("Data")

    Dim wksIn As Worksheet
    Set wksIn = Sheets("In")

    Set rLastCell = wksIn.Cells.Find(What:="*", After:=wksIn.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)

    wksIn.Range(Cells(5, rLastCell.Column + 1), Cells(10, rLastCell.Column + 1)).Value = wksData.Range("L5:L10").Value
    wksIn.Range(Cells(11, rLastCell.Column + 1), Cells(16, rLastCell.Column + 1)).Value = wksData.Range("L13:L18").Value
End Sub

方法C

查找第5行的最后一列,并在下一个可用列中添加信息:

Sub offsetCol()
    Dim wksData As Worksheet
    Set wksData = Sheets("Data")

    Dim wksIn As Worksheet
    Set wksIn = Sheets("In")

    Dim rLastCol As Integer
    rLastCol = wksIn.Cells(5, wksIn.Columns.Count).End(xlToLeft).Column + 1

    wksIn.Range(Cells(5, rLastCol), Cells(10, rLastCol)).Value = wksData.Range("L5:L10").Value
    wksIn.Range(Cells(11, rLastCol), Cells(16, rLastCol)).Value = wksData.Range("L13:L18").Value
End Sub

开始数据:

enter image description here


结果(方法C):

enter image description here

答案 1 :(得分:0)

问题的一部分 - 从位置A 复制到位置B ,不是很清楚,但我猜这就是你需要的。把它放在一个按钮的宏下:

Sub Macro2()
Dim rng As Range
Sheets("IN").Range("B:B").Insert Shift:=xlToRight
Sheets("Data").Select
Set rng = Range("L5,L6,L7,L8,L9,L10,L13,L14,L15,L16,L17,L18")
rng.Copy Sheets("IN").Range("B:B")

End Sub