我想根据“注册号”合并两份工作表。在第三个工作表中。
Workbook:
Tabelle1: Consolidated Worksheet //
Tabelle2: Input Data1 //
Tabelle3: Input Data2
注意:
首先是“注册号”只能在Tabelle2&列A中的Tabelle3。
因为Tabelle1的列序列不同于Tabelle2& Tabelle3我使用vLookup将数据粘贴到Tabelle1中的右列。
点子:
1。步骤 通过vLookup将Tabelle2数据(包括“注册号”)粘贴到Tabelle1中的右列。 注意:这意味着“注册号” Tabelle 1栏A。
2。步骤 通过vLookup将Tabelle3数据粘贴到Tabelle1中的行和列中。 由于Tabelle3包含更多“注册号”比Tabelle2,我希望我的代码检查“注册号”在Tabelle1列A中,从Tabelle3复制相应的数据。
错误:
2。步骤无效。
运行时错误'1004'
例如:
For i = 2 To lastrow2
Tabelle1.Cells(7 + i, 2) = Application.WorksheetFunction.VLookup(Tabelle1.Cells(i, 1), myrange2, 2, False)
Next i
有谁知道我的代码出了什么问题?非常感谢:)
我的代码:
Sub ConsolidateData()
Dim lastrow As Long
lastrow = Tabelle2.Range("A" & Rows.Count).End(xlUp).Row
Set myrange = Tabelle2.UsedRange
For i = 2 To lastrow
Tabelle1.Cells(7 + i, 1) = Application.WorksheetFunction.VLookup(Tabelle2.Cells(i, 1), myrange, 1, False)
Next i
For i = 2 To lastrow
Tabelle1.Cells(7 + i, 3) = Application.WorksheetFunction.VLookup(Tabelle2.Cells(i, 1), myrange, 2, False)
Next i
For i = 2 To lastrow
Tabelle1.Cells(7 + i, 6) = Application.WorksheetFunction.VLookup(Tabelle2.Cells(i, 1), myrange, 3, False)
Next i
Dim lastrow2 As Long
lastrow2 = Tabelle3.Range("A" & Rows.Count).End(xlUp).Row
Set myrange2 = Tabelle3.UsedRange
For i = 2 To lastrow2
Tabelle1.Cells(7 + i, 2) = Application.WorksheetFunction.VLookup(Tabelle1.Cells(i, 1), myrange2, 2, False)
Next i
For i = 2 To lastrow2
Tabelle1.Cells(7 + i, 4) = Application.WorksheetFunction.VLookup(Tabelle1.Cells(i, 1), myrange2, 3, False)
Next i
For i = 2 To lastrow2
Tabelle1.Cells(7 + i, 5) = Application.WorksheetFunction.VLookup(Tabelle1.Cells(i, 1), myrange2, 4, False)
Next i
For i = 2 To lastrow2
Tabelle1.Cells(7 + i, 7) = Application.WorksheetFunction.VLookup(Tabelle1.Cells(i, 1), myrange2, 5, False)
Next i
End Sub
答案 0 :(得分:0)
我认为问题在于您引用工作表的方式。您正在使用Worksheet.CodeName与工作表的Worksheet.Name。
查看下面的示例,您将看到Worksheet.CodeName和Worksheet.Name不匹配。
Worksheet.CodeName是名称的第一部分,Worksheet.Name是括号中显示的内容。因此,第二个工作表的Worksheet.CodeName是Sheet5,而Worksheet.Name是Sheet6。
这是因为我在后台删除了一个工作表和excel,重命名了Worksheet.CodeName引用。
要使用在查看工作簿中的选项卡时看到的内容,您需要通过Worksheet.Name引用它,而不是Worksheet.CodeName。
Sub testPickingWorksheets()
' This code fails
a = Sheet6.Range("A1").Value
MsgBox (a)
' This code works
a = Worksheets("Sheet6").Range("A1").Value
MsgBox (a)
End Sub
从上面的代码中可以看出,您需要在“引号”中使用Worksheets()Ojbect和Worksheet.Name,而不是直接引用Worksheet.CodeName。