VBA - 从一个工作表中复制数据

时间:2016-01-21 22:28:12

标签: vba

早上好,

我正在尝试将数据从多个工作表(在单元格M78:078中)复制到一个工作表中,其中摘要表的列(L)中的名称与工作表名称匹配(粘贴到Z:AA列中)摘要表。

目前,以下代码出错了:

Sub Output_data()
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
If ActiveSheet.Range("L:L").Value = wkSht.Name Then
ws.Range("M78:O78").Copy
ActiveSheet.Range("L").CurrentRegion.Copy        Destination:=wkSht.Range("Z:AA").Paste
End If
Next ws           
Application.ScreenUpdating = True
End Sub

任何帮助都会很棒。

DRod

1 个答案:

答案 0 :(得分:0)

这样的事情对你有用。我对代码进行了评论,试图解释它的作用。

Sub Output_data()

    Dim wb As Workbook
    Dim ws As Worksheet
    Dim wsGet As Worksheet
    Dim LCell As Range
    Dim sDataCol As String
    Dim lHeaderRow As Long

    sDataCol = "L"  'Change to be the column you want to match sheet names agains
    lHeaderRow = 1  'Change to be what your actual header row is

    Set wb = ActiveWorkbook
    Set ws = wb.Sheets("Summary")    'Change this to be your Summary sheet

    'Check for values in sDataCol
    With ws.Range(sDataCol & lHeaderRow + 1, ws.Cells(ws.Rows.Count, sDataCol).End(xlUp))
        If .Row <= lHeaderRow Then Exit Sub 'No data

        'Loop through sDataCol values
        For Each LCell In .Cells
            'Check if sheet named that value exists
            If Evaluate("ISREF('" & LCell.Text & "'!A1)") Then
                'Found a matching sheet, copy M78:O78 to the corresponding row, column Z and on
                Set wsGet = wb.Sheets(LCell.Text)
                wsGet.Range("M78:O78").Copy ws.Cells(LCell.Row, "Z")
            End If
        Next LCell
    End With

End Sub