将2列中的数据与VBA或公式进行比较

我有两张ID,第一个和最后一个名字,从两个不同的数据库中提取。

我需要向客户端发送第三张纸,其中显示了纸张1的ID 32721等同于纸张2的ID 32761

所有这些数据做一个DE x

我怎样才能在Excel中做到这一点? 我已经尝试过公式,我一直没有能力,有没有办法用VBA做到这一点? 如果是这样,请帮助我,因为我对VBA一无所知。

图片

结果

我需要在两张纸上比较姓名和姓氏,在第三张纸上显示身份证之间的关系。

在这里输入图像描述

这个解决scheme提取到Sheet3如下:

  1. 匹配logging和他们的关系
  2. Sheet1中的logging不在Sheet2
  3. Sheet2中的logging不在Sheet1

假设:在工作表中有不同数量的logging,并且这两个工作表中的logging没有sorting。 Sheet1中的logging位于A1:C36 ,而Sheet2中的logging位于A1:C33

公式:

  1. 匹配logging及其关系(位于A1:D33

要提取出现在两张表中的logging,请使用以下公式:

Sheet1 ID(列A中的FormulaArray ):

  =IFERROR( INDEX( ID.1, AGGREGATE( 15, 6, MATCH( Name.2 & LastName.2, Name.1 & LastName.1, 0 ), ROW() - ROW($1:$1) )), "") 

名称(B列公式):

  =IFERROR( INDEX( Name.1, MATCH( $A2, ID.1, 0 )), "") 

姓氏(C列公式):

  =IFERROR( INDEX( LastName.1, MATCH( $A2, ID.1, 0 )), "") 

Sheet2 ID(D列中的FormulaArray列表):

  =IFERROR( INDEX( ID.2, MATCH( INDEX( Name.1, MATCH( $A2, ID.1, 0 )) & INDEX( LastName.1, MATCH( $A2, ID.1, 0 )), Name.2 & LastName.2, 0 )), "") 
  1. Sheet1中的logging不在Sheet2 (位于F1:H33

要提取只出现在Sheet1的logging,请使用以下公式:

Sheet1 ID(列F中的FormulaArray ):

  =IFERROR(AGGREGATE(15,6, IF(ISERROR(MATCH( Name.1 & LastName.1, Name.2 & LastName.2, 0 )), ID.1, ""), ROW() - ROW($1:$1)),"") 

名称(G列公式):

  =IFERROR( INDEX( Name.1, MATCH( $F2, ID.1, 0 )), "") 

姓氏(H列公式):

  =IFERROR( INDEX( LastName.1, MATCH( $F2, ID.1, 0 )), "") 
  1. Sheet2中的logging不在Sheet1 (位于J1:L33 )要提取仅出现在Sheet2的logging,请使用以下公式:

Sheet2 ID(列J中的FormulaArray ):

  =IFERROR(AGGREGATE(15,6, IF(ISERROR(MATCH( Name.2 & LastName.2, Name.1 & LastName.1, 0 )), ID.1, ""), ROW() - ROW($1:$1)),"") 

名称(K栏中的公式):

  =IFERROR( INDEX( Name.2, MATCH( $J2, ID.2, 0 )), "") 

姓氏(列L中的公式):

  =IFERROR( INDEX( LastName.2, MATCH( $J2, ID.2, 0 )), "") 

哪里:

ID.1 = Sheet1!$A$2:$A$36

Name.1 = Sheet1!$B$2:$B$36

LastName.1 = Sheet1!$C$2:$C$36

ID.2 = Sheet2!$A$2:$A$33

Name.2 = Sheet2!$B$2:$B$33

LastName.2 = Sheet2!$C$2:$C$33

inputFormulaArrays同时按下CTRL + SHIFT + ENTER 如果input正确 ,您将 在公式周围 看到 { }

请参阅AGGREGATE函数 , INDEX函数 , MATCH函数 。

您应该可以使用INDEX MATCH 数组公式 (请Ctrl + Shift + Enter ,而不是Enter )来生成Sheet 2中的ID列表。该链接提供了在多个条件下使用INDEX MATCH的极好的解释。 (它基本上和VLOOKUP ,但function更强大)。 你的公式看起来像这样:

 {=INDEX('Sheet2'!$A$2:$C$13, MATCH(1, (B2='Sheet2'!$B$2:$B$13) * (C2='Sheet2'!$C$2:$C$13) ,0), 1)} 

上述情况下,在Sheet2中分别在B2:B13和C2:C13范围内的Sheet1中find来自Sheet1的B2和C2的行MATCH ,然后使用INDEX作为该行和来自Sheet2的第1列。