将特定列从一个工作表复制到另一个工

时间:2016-01-01 05:52:16

标签: excel-vba vba excel

我想将A,B,H等某些列从一个工作表复制到另一个工作表,然后将此代码复制到模块中,但我得到了一个"运行时错误9"。

Sub CopyColumnToWorkbook()
Dim sourceColumn As Range, targetColumn As Range

Set sourceColumn = Workbooks("sheet1.xlsm").Worksheets(1).Columns("A")
Set targetColumn = Workbooks("sheet2.xlsm").Worksheets(1).Columns("A")

sourceColumn.Copy Destination:=targetColumn
End 

我正在处理有55列和453行的数据。如何将备用列从一个工作表复制到另一个...示例

我只想要2010-2011一年的专栏。在我的数据中,2010年至2011年和2011 - 2012年分别安排为2010年4月至2011年4月的一栏和2011年4月的下一栏。下一栏是2010年至2011年5月,下一站是5月-2011-2012 ......等等。

1 个答案:

答案 0 :(得分:0)

使用like语句,例如:

Sub Button1_Click()
    Dim sh1 As Worksheet, sh2 As Worksheet
    Dim col As Long, rng As Range, c As Range, cRng As Range, cRws As Long, col2 As Long

    Set sh1 = Sheets("Sheet1")
    Set sh2 = Sheets("Sheet2")

    With sh1
        col = .Cells(1, .Columns.Count).End(xlToLeft).Column
        Set rng = .Range(.Cells(1, 1), .Cells(1, col))

        For Each c In rng.Cells

            If c Like "*2010-2011*" Then
                cRws = .Cells(.Rows.Count, c.Column).End(xlUp).Row
                Set cRng = .Range(.Cells(1, c.Column), .Cells(cRws, c.Column))

                cRng.Copy sh2.Cells(1, sh2.Columns.Count).End(xlToLeft).Offset(, 1)
            End If

        Next c
    End With

    sh2.Columns("A:A").EntireColumn.Delete Shift:=xlToLeft
    sh2.Cells.EntireColumn.AutoFit

End Sub