Vba 将特定列复制到其他工作表中,运行宏时会将列向右移动
我需要一些帮助,因为我遇到了一个问题,对VBA来说很陌生。我想复制L5-L18中的数据,不包括一些单元格,并将其粘贴到工作表(In)的B列,并创建一个按钮,每次按下该按钮时,将数据从B列、工作表(数据)复制到工作表(In)并向右移动列。就像第一次b栏,下一次c栏…每次我按下按钮。。非常感谢Vba 将特定列复制到其他工作表中,运行宏时会将列向右移动,vba,loops,copy,paste,Vba,Loops,Copy,Paste,我需要一些帮助,因为我遇到了一个问题,对VBA来说很陌生。我想复制L5-L18中的数据,不包括一些单元格,并将其粘贴到工作表(In)的B列,并创建一个按钮,每次按下该按钮时,将数据从B列、工作表(数据)复制到工作表(In)并向右移动列。就像第一次b栏,下一次c栏…每次我按下按钮。。非常感谢 Sub Macro2() Sheets("Data").Select Range("L5,L6,L7,L8,L9,L10,L13,L14,L15,L16,L17,L18").Select Range
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
方法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
起始数据:
结果(方法C):
问题的一部分-从位置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
Oops没有看到@portland runner已经有了答案。如果对你有用,就用他的答案谢谢你的回答,但我希望我第一次按下按钮时,数据将复制到b列,下一次,新数据将打印到c列。。所以b保持不变,比如导出不同月份的数据,所以我想要一月->二月->三月。。不要让简搬家。。你怎么认为??问候我的朋友。我想波特兰已经为你找到了答案,我不会费心更新我的答案。顺便说一句,Eyershield 21是一种很好的胺=)是的,我找不到贝蒂的昵称,但有一件是我最喜欢的。。到目前为止最好的!!谢谢你的时间…非常感谢你的回答。。。工作完美,但我希望原来的列是稳定的,新的列被转移到右边。。基本上,它将作为每个月的数据。。原来的第一栏是一月。。。。非常感谢。。。你知道我应该修改什么吗?参见编辑,我在底部添加了一个方法来使用最后一个可用列。这就是你要找的吗?我看起来不错,但不知什么原因没有跑步。。当我试着运行它时,它什么也没做。。在您的工作表上,它是否正在运行?如果您的工作表有大量数据,它将找到任何一行的最后一列。请在代码末尾尝试以下操作:
MsgBox(rLastCell.Column)
这将告诉您数据要进入的列号。它是有效的,但我无法理解为什么它从第25列开始,而不是从b开始,然后向右移动。。第一个aproach有点不对劲。。。想象一下,在B中是1月,c->2月,d->3月,然后向右移动。。你认为我们能做到吗????真诚地感谢您抽出时间。。