Excel VBA基于列表从多张图纸复制图纸数据

Excel VBA基于列表从多张图纸复制图纸数据,excel,excel-2010,vba,Excel,Excel 2010,Vba,好的,这是我基于下面代码的更新。我需要的是从“主”中列出的任何表格中获得任何数据,以填写“组合”表格。我将在每张表中只包含三列数据。每张工作表中的数据应从“合并”的A列开始 Private Sub CommandButton1_Click() Dim lLastRow As Long Dim i As Integer lLastRow = Worksheets("Master").Cells(Rows.Count, 1).End(xlUp)

好的,这是我基于下面代码的更新。我需要的是从“主”中列出的任何表格中获得任何数据,以填写“组合”表格。我将在每张表中只包含三列数据。每张工作表中的数据应从“合并”的A列开始

   Private Sub CommandButton1_Click()
        Dim lLastRow As Long
        Dim i As Integer

        lLastRow = Worksheets("Master").Cells(Rows.Count, 1).End(xlUp).Row
        last_col = 0

        For i = 2 To lLastRow
            MySheet = Worksheets("Master").Cells(i, 1).Value
            Worksheets(MySheet).Columns(1).Copy Worksheets("Combined").Columns(last_col + 1)
            last_col = Worksheets("Combined").Cells(1, Columns.Count).End(xlToLeft).Column
        Next
    End Sub
尝试以下方法

根据OP评论编辑(数据“堆叠”)


由于您没有提供任何代码,我假设您还没有尝试解决方案。这并不真的需要VBA(这就太过工程化了)。调查间接()公式的使用。同意@Zerk。无论如何,试着用谷歌搜索以下代码片段:1)在主列A中包含数据的所有单元格中循环。2)循环中的每个单元格,3)在变量中设置单元格值(
TheCell=Worksheets(“Master”)、单元格(i,1)
),以及4)从所需的工作表中复制(
Worksheets(“组合”)。范围(DefineYourRangeHere)=工作表(TheCell)。范围(“A:B”)
我在谷歌上看得越多,我就越困惑。我只能找到复制所有数据或从特定工作表中复制数据的代码样本;;(
MyVal
)。指定范围(相同的链接,但选中
MyRNG
).Thank@CMArg所以你是说这只是显示最后一个单元格,因为它会继续重写?不。我编辑了答案。现在代码获取最后一列,然后添加数据。试试看。我运行了代码,“组合”工作表只显示了“主”中a列的最后一个单元格。我运行了代码,在“组合”的第一列中工作表被放置在表格A2中的列数据,在“组合”的第二列被放置在表格A3中的列数据,依此类推。好的,这似乎是可行的,但是,我需要将组合数据放在A列中。现在的方式是,它跨A、B、C等列放置
Private Sub CommandButton1_Click()
    Dim lLastRow As Long
    Dim i As Integer

    lLastRow = Worksheets("Master").Cells(Rows.Count, 1).End(xlUp).Row 'Last row of Master Sheet
    lLastRowCombined = Worksheets("Combined").Cells(Rows.Count, 1).End(xlUp).Row 'Last row of Combined Sheet

    For i = 2 To lLastRow 'scan all rows in Master Sheet
        MySheet = Worksheets("Master").Cells(i, 1).Value 'MySheet stores the sheet name from list in Master, row i, column A
        lLastRow2 = Worksheets(MySheet).Cells(Rows.Count, 1).End(xlUp).Row 'For that Sheet, get the last row
        Worksheets(MySheet).Range("A1:C" & lLastRow2).Copy Worksheets("Combined").Range("A" & lLastRowCombined) 'copy the range into Combined Sheet
        lLastRowCombined = Worksheets("Combined").Cells(Rows.Count, 1).End(xlUp).Row + 1 'Get the NEW Last row of Combined Sheet
    Next
End Sub