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

VBA-从一个工作表t复制数据,vba,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

早上好

我试图将数据从多个工作表(在单元格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类似的东西应该适合您。我对代码进行了注释,试图解释它的功能

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
子输出_数据()
将wb设置为工作簿
将ws设置为工作表
将wsGet设置为工作表
暗淡的LCell As范围
Dim sDataCol作为字符串
暗淡的头与长的头一样长
sDataCol=“L”更改为要重新匹配图纸名称的列
lHeaderRow=1'更改为实际的标题行
设置wb=ActiveWorkbook
设置ws=wb.Sheets(“Summary”)'将其更改为您的摘要表
'检查sDataCol中的值
使用ws.Range(sDataCol&lHeaderRow+1,ws.Cells(ws.Rows.Count,sDataCol.End)(xlUp))

If.Row错误是什么?在哪一行?你只想从M列和O列复制数据吗?因为如果你在做M:O,那实际上是M列、N列和O列。你的目的地只有两列,Z列和AA列,这就是为什么我要问的。是的,所有三列都想知道,你能确认A1列与什么有关吗?--它只是在运行时间之外出错错误“13”上的类型不匹配line@DRodA1就在那里,以便Evaluate可以使用
ISREF
函数并测试工作表是否存在。在这种情况下,它正在测试
LCell.Text
中的工作表名称是否存在。Evaluate行不应该给出任何错误。如果工作表存在,它应该返回
TRUE
and如果工作表不存在,它应该返回
FALSE
。我已经测试了代码,它对我来说可以正常工作。您是否修改了代码?更改是更新标题行,并将工作表名称从“Summary”更改为“Sheet1”