Excel 复制选择性列数据,直到列1中的数据结束

Excel 复制选择性列数据,直到列1中的数据结束,excel,vba,Excel,Vba,我目前正在使用以下代码将粘贴数据从文件“源”复制到文件“目标”。它选择行,直到数据在第1列结束。 但是,目前选择了从A到AE的所有列,但是我希望选择像A、F、K、AA这样的选择性列。 我知道“wb.ActiveSheet.Range(“A2:AE”&N.Copy”)中的代码需要更改,但不确定语法。 有人能帮我吗?提前感谢你的帮助 Dim wb As Workbook Set wb = ActiveWorkbook Dim N As Long Dim LastRow As Long N = Ce

我目前正在使用以下代码将粘贴数据从文件“源”复制到文件“目标”。它选择行,直到数据在第1列结束。 但是,目前选择了从AAE的所有列,但是我希望选择像A、F、K、AA这样的选择性列。 我知道“wb.ActiveSheet.Range(“A2:AE”&N.Copy”)中的代码需要更改,但不确定语法。 有人能帮我吗?提前感谢你的帮助

Dim wb As Workbook
Set wb = ActiveWorkbook

Dim N As Long
Dim LastRow As Long
N = Cells(2, 1).End(xlDown).Row
wb.ActiveSheet.Range("A2:AE" & N).Copy

Set y = Workbooks.Open("C:\Desktop\Destination.xlsx")

y.Activate
y.Sheets("Data").Select
y.Sheets("Data").Activate


For Each Cell In y.Sheets("Data").Columns(1).Cells
     If Len(Cell) = 0 Then Cell.Select: Exit For
Next Cell
Selection.PasteSpecial Paste:=xlPasteValues
Application.DisplayAlerts = False
ActiveWorkbook.Close True
Application.DisplayAlerts = True
Application.CutCopyMode = False

您可以使用
应用程序.Union
组合不同列的范围(从第2行到
N

另外,您可以使用
LastRow=.Cells(.Rows.Count,“A”).End(xlUp).Row+1
,而不是在
y.Sheets(“数据”).Columns(1.Cells)中循环查找空的
单元格

我用wb.Sheets(“Sheet1”)添加了2个
,以完全限定所有变量和嵌套在下面的
范围

代码

Option Explicit

Sub CopyColumns()

Dim wb      As Workbook
Dim Y       As Workbook
Dim N       As Long
Dim LastRow As Long
Dim CopyRng As range

Application.DisplayAlerts = False
Application.ScreenUpdating = False

Set wb = ActiveWorkbook

' you need to specify the sheet, otherwise it will take the Active Sheet
With wb.Sheets("Sheet1") ' <-- modify to your sheet's name
    N = .Cells(.Rows.Count, "A").End(xlUp).Row ' <-- get last row from Column "A", skips blank cells in te middle
    ' set the range to Columns A, F, K, AA
    Set CopyRng = Application.Union(.Range("A2:A" & N), .Range("F2:F" & N), .Range("K2:K" & N), .Range("AA2:AA" & N))
End With

Set Y = Workbooks.Open("C:\Desktop\Destination.xlsx")    
With Y.Sheets("Data")
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 '<-- get first empty row at Column A to paste at
    CopyRng.Copy
    .Range("A" & LastRow).PasteSpecial xlPasteValues
End With    
Y.Close True

Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.CutCopyMode = False

End Sub
选项显式
子复制列()
将wb设置为工作簿
将Y作为工作簿
长
最后一排一样长
暗拷贝As范围
Application.DisplayAlerts=False
Application.ScreenUpdating=False
设置wb=ActiveWorkbook
'您需要指定工作表,否则它将占用活动工作表
附工作分解表(“表1”)'