VBA-从一个工作表t复制数据
早上好 我试图将数据从多个工作表(在单元格M78:078中)复制到一个工作表中,其中汇总表的列(L)中的名称与工作表名称匹配(粘贴到汇总表的列Z:AA中) 目前,以下代码正在出错: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
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”