Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将特定列从一张图纸复制到另一张图纸_Excel_Vba - Fatal编程技术网

Excel 将特定列从一张图纸复制到另一张图纸

Excel 将特定列从一张图纸复制到另一张图纸,excel,vba,Excel,Vba,我想将某些列(如A、B、H)从一个工作表复制到另一个工作表,并将此代码复制到一个模块中,但出现了“运行时错误9” 我正在处理55列453行的数据。如何将一个工作表中的备用列复制到另一个工作表中…示例 我只想要2010-2011年的专栏。在我的数据中,2010-2011年和2011-2012年是交替排列的,比如2010-2011年4月的一列和2011-2012年4月的下一列。下一列是2010-2011年5月的,下一列是2011-2012年5月的。依此类推。使用类似的语句,例如: Sub Butto

我想将某些列(如A、B、H)从一个工作表复制到另一个工作表,并将此代码复制到一个模块中,但出现了“运行时错误9”

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


我只想要2010-2011年的专栏。在我的数据中,2010-2011年和2011-2012年是交替排列的,比如2010-2011年4月的一列和2011-2012年4月的下一列。下一列是2010-2011年5月的,下一列是2011-2012年5月的。依此类推。

使用类似的语句,例如:

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

使用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

在运行该代码之前,必须打开工作簿“sheet1.xlsm”和“sheet2.xlsm”。“运行时错误9”的下标超出范围。这意味着:集合中没有此类项目。我怀疑:
工作簿
集合中没有“sheet1.xlsm”或“sheet2.xlsm”。您的问题暗示您正在一个工作簿中的不同工作表之间复制数据,但您的代码试图在工作簿(文件)之间复制。在运行该代码之前,必须打开工作簿“sheet1.xlsm”和“sheet2.xlsm”。“运行时错误9”的下标超出范围。这意味着:集合中没有此类项目。我怀疑:
工作簿
集合中没有“sheet1.xlsm”或“sheet2.xlsm”。您的问题暗示您正在一个工作簿中的不同工作表之间复制数据,但您的代码尝试在工作簿(文件)之间复制数据