根据匹配的excel列比较两个excel列中的数据

所以说我有一个电子表格在以下格式:

Sheet 1 | Sheet 2 name email | name email Mike Jones mikej@mail | John Smith jsmith@mail John Smith johns@mail | Mike Jones mjones@mail John Public jpublic@mail | Chris Paul cpaul@mail Chris Paul cpaul@mail | John Public jpublic@mail Jim Abram jambram@mail | Tim Toole ttoole@mail | 

而我想比较具有匹配名称的条目的电子邮件并显示不匹配的名称(如果需要,我可以将所有数据放在一张纸上),所以基本上,这将输出:

麦克琼斯

约翰·史密斯

我试图用一个公式来做到这一点,但我想我可能不得不用一个macros来… …任何人都可以指向我的例子吗?

我正在尝试沿着这些线路:

 =IF(ISERROR(MATCH(Sheet1!A1,Sheet2!$A$1:$A$5,0)),(IF(ISERROR(MATCH(Sheet1!B1,Sheet2!$B$1:$B$5,0)), Sheet1!A1, ""),"") 

并且真的想把这个expression为一个macros观。

这是一个快速和简单的配方解决scheme的尝试!

  1. 创build表单3;
  2. 名称单元格A1 = allnames。 将所有名称(工作表1 +工作表2)粘贴到列A上
  3. 名称单元格B1 =电子邮件。
    键入B2 = IF(VLOOKUP(A2,Sheet1!$A$1:$B$7,2,0<>VLOOKUP(A2,Sheet2!$A$1:$I$5,2,0),VLOOKUP(A2,Sheet1!$A$1:$B$7,2,0),"")

  4. 复制栏B并粘贴在栏C处作为“值”

  5. "#N/A"replace"#N/A" ""
  6. ""过滤列C
  7. 在COLUMN A查看您的预期结果

如果可以在表单1上插入一列,然后过滤它以find重复项,则可以这样做:

 name email Duplicate Count Mike Jones mikej@mail 0 John Smith johns@mail 0 John Public jpublic@mail 1 Chris Paul cpaul@mail 1 Jim Abram jambram@mail 0 Tim Toole ttoole@mail 0 

重复计数列具有以下内容:

 =SUMPRODUCT((D:D=A2)*1,(B2=E:E)*1) 

如果列D和列E是上面的第二个表格。

这里有一些简短的代码将存储在工作簿中的匹配。 您需要包含对“Microsoft脚本运行时”的引用。

 Sub Compare(rng1 As Range, rng2 As Range, rngTarget As Range) Dim d As New Scripting.Dictionary Dim rngTemp As Range Const cMailCol As Long = 2 For Each rngTemp In rng1.Columns(1).Cells d.Add rngTemp.Offset(cMailCol - 1).Value, rngTemp.Value Next For Each rngTemp In rng2.Columns(1).Cells If d.Exists(rngTemp.Offset(cMailCol - 1).Value) Then rngTarget = d(rngTemp.Offset(cMailCol - 1).Value) Set rngTarget = rngTarget.Offset(1) End If Next End Sub 

把它称为Compare [A2:B7], [D2:E5], [G2]来存储前两个范围在G2中的匹配!