繁体   English   中英

使用VBA或公式比较2列中的数据

[英]Compare data in 2 columns with VBA or formula

我有2张工作表,分别从两个不同的数据库中提取了ID(姓和名)。

我需要发送所述客户端的第三片材,其中它显示了片材1的ID 32721,相当于片材2的ID 32761。

所有这些数据制作一个DE x

如何在Excel中做到这一点? 我已经尝试过使用公式,但是无法使用VBA,有什么方法可以做到这一点? 如果是这样,请帮助我,因为我对VBA一无所知。

图片

结果

我需要在两个工作表中比较名称和姓氏,并在第三工作表中显示ID之间的关系。

在此处输入图片说明

您应该能够在工作表1中使用INDEX MATCH 数组公式Ctrl + Shift + Enter ,而不只是Enter )来生成工作表2中的ID列表。此链接提供了在多个条件下使用INDEX MATCH的出色说明。 。 (它实际上与VLOOKUP相同,但功能更强大)。 您的公式如下所示:

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

上面的代码在Sheet2中分别从Sheet1的B2:B13和C2:C13范围中找到了B2和C2的行MATCH ,然后为该行和Sheet2中的列1使用INDEX

该解决方案将以下内容提取到Sheet3

  1. 匹配记录及其关系
  2. Sheet1中的记录不在Sheet2
  3. Sheet2中的记录不在Sheet1

假设:工作表中有不同数量的记录,并且两个工作表中的记录均未排序。 Sheet1中的记录位于A1:C36Sheet2中的记录位于A1:C33

公式:

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

要提取出现在两个工作表中的记录,请使用以下公式:

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中的记录不在Sheet2 (位于F1:H33

要提取仅出现在Sheet1的记录,请使用以下公式:

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不在Sheet1记录(位于J1:L33 )要提取仅出现在Sheet2的记录,请使用以下公式:

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

同时 CTRL + SHIFT + ENTER 输入 FormulaArrays 如果正确输入 ,您将 在公式周围 看到 { }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM