合并两个工作表

时间:2018-03-13 15:31:42

标签: excel vba excel-vba vlookup

我想根据“注册号”合并两份工作表。在第三个工作表中。

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

1 个答案:

答案 0 :(得分:0)

我认为问题在于您引用工作表的方式。您正在使用Worksheet.CodeName与工作表的Worksheet.Name。

查看下面的示例,您将看到Worksheet.CodeName和Worksheet.Name不匹配。

enter image description here

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。