Excel 从外部数据向现有表中添加新行,但不重复

Excel 从外部数据向现有表中添加新行,但不重复,excel,vba,Excel,Vba,我有一个包含现有员工姓名、ID和地址的电子表格 这些工人被雇用和解雇了很多次 我从一个网站上获取了一份报告,其中列出了这些员工的姓名、身份证和当前雇用的地址 我希望将reportEXTERNAL data sheet中的工作人员行自动添加到我的tableMASTER sheet中,而不是添加和删除这些工作人员的行主控表中的表以匹配reportEXTERNAL data sheet中的数据 我需要添加整行的原因是因为我在主工作表的表格中有更多的列,所以我可以添加他们的职位、轮班和激励工资。所以我需

我有一个包含现有员工姓名、ID和地址的电子表格

这些工人被雇用和解雇了很多次

我从一个网站上获取了一份报告,其中列出了这些员工的姓名、身份证和当前雇用的地址

我希望将reportEXTERNAL data sheet中的工作人员行自动添加到我的tableMASTER sheet中,而不是添加和删除这些工作人员的行主控表中的表以匹配reportEXTERNAL data sheet中的数据

我需要添加整行的原因是因为我在主工作表的表格中有更多的列,所以我可以添加他们的职位、轮班和激励工资。所以我需要在删除worker时删除整行

我需要一些代码将一张工作表上的外部数据表外部数据表中的行添加到另一张工作表上的主表中,而不需要重复的工作表

这段代码现在在我的工作表上非常有效。我可能能够在一些帮助下修改此代码

`Private Sub Worksheet_Change(ByVal Target As Range)
' Code to move row from FIRED sheet to MASTER sheet when “REHIRED” is 
'selected in column J
  If Target.Column = 2 Then
' The line below is where I should change to something to compare if there 
'is a new number 
'in the "NUMBER" column of the "EXTERNAL DATA" sheet then move the row to  
'the "MASTER" table. 
  If Target = "REHIRED" Then
    Application.EnableEvents = False
    nxtRow = Sheets("MASTER").Range("H" & Rows.Count).End(xlUp).Row + 1
    Target.EntireRow.Copy _
    Destination:=Sheets("MASTER").Range("A" & nxtRow)
    Target.EntireRow.Delete
  End If
 End If
 Application.EnableEvents = True
End If
End Sub`

我希望这是有道理的

编辑:更新/测试。假设两组数据都格式化为表/列表对象:

Sub Tester()

    Dim lo As ListObject, loExt As ListObject, lr As ListRow
    Dim rw As Range, shtExt As Worksheet, f As Range, shtMaster As Worksheet
    Dim rwNew As Range

    Set shtExt = Sheets("external data")
    Set shtMaster = Sheets("master")
    Set lo = shtMaster.ListObjects(1) 'or use the table name
    Set loExt = shtExt.ListObjects(1) 'assumes the external data is a listobject

    For Each lr In loExt.ListRows

        'try to find the Id on the master sheet
        Set f = lo.ListColumns(1).Range.Find(lr.Range(1).Value, lookat:=xlWhole)
        If f Is Nothing Then

            'no match: add a new row to the table
            Set rwNew = shtMaster.ListObjects(1).ListRows.Add().Range
            'populate the new row
            rwNew.Cells(1).Value = lr.Range(1).Value
            rwNew.Cells(2).Value = lr.Range(2).Value
            rwNew.Cells(3).Value = lr.Range(3).Value
            'etc transfer any other required values...

        End If
    Next lr

End Sub

你的问题是关于你发布的代码,还是关于其他什么?如果不知道您现有的数据是什么样子,以及报告是什么样子,就很难提出任何建议。对不起,我是新手。我如何发布电子表格?你可以使用链接的谷歌表格来显示两张表格的布局,或者在你的问题中直接显示一个简单的例子。这个怎么样?因此,我需要从外部数据表中获取数据行,并将新行插入到主数据表中,而不重复。为了保护,我更改了第一列中的ID号。我想确保这一行被添加到母版图纸的表格中,而不是仅仅添加到表格下面的下一行。我在这方面遇到了一些错误,我可以看出这会有点困难。。。再次查看我的电子表格。我可以使用power查询,将外部数据转换为表,并匹配主数据和外部数据工作表上的表名,这将使我更容易使用此示例更新工作表。这会让事情变得更简单吗?我不是一个Power Query用户,所以我无法帮助解决这个问题。一些EROR并没有告诉我您可能遇到了什么问题,尽管我使用这段代码将行移动到主工作表中,但在激发工作表的第8列中选择了REHIRED。也许我可以修改这个代码,看看上面我的编辑。在将外部数据转换为ListObjective后,我可以使用您发布的工作表。我有一些代码可以修改,但它不允许我发布代码。说它太长了。我如何在这里发布代码?