如何比较Excel中的两列(来自不同工作表),如果前两列匹配,则复制相应列中的值?

时间:2012-04-17 15:15:35

标签: excel excel-formula

我正在尝试将工作表1中的列a与工作表2中的列a进行比较,然后将工作表2中相应的值从工作表2中的工作表1复制到列b(其中列值匹配)。我一直在努力阅读如何做到这一点,但我不确定我是否应该尝试创建一个宏,或者如果有更简单的方法来做这个,可能是VLOOKUP或MATCH?我真的不熟悉这些功能如何工作。

此外,如果它有所不同,则表2中的列b中将重复出现值。

第1页

12AT8001    1
12AT8002    2
12AT8003    3
12AT8004    4
12AT8005    5
12AT8006    6

第2页

12AT8001
12AT8001
12AT8001
12AT8001
12AT8001
12AT8002
12AT8002
12AT8002
12AT8002
12AT8002
12AT8003
12AT8003
12AT8003
12AT8003
12AT8003

4 个答案:

答案 0 :(得分:5)

如果参考值(列A,表1)按升序排列,则

Vlookup是好的。另一种选择是索引和匹配,无论顺序如何都可以使用(只要列a,表1中的值是唯一的)

这是您在第2页的B列中放入的内容

=INDEX(Sheet1!A$1:B$6,MATCH(A1,Sheet1!A$1:A$6),2)

Sheet1!A$1:B$6Sheet1!A$1:A$6设置为命名范围,使其更加用户友好。

答案 1 :(得分:3)

正如kmcamara所发现的,这正是VLOOKUP要解决的问题,使用vlookup可以说是完成工作的最简单方法。

除了lookup_value的三个参数,要搜索的table_range和返回值的column_index之外,VLOOKUP还有一个可选的第四个参数,Excel文档称之为“range_lookup”。

扩展deathApril的解释,如果此参数设置为TRUE(或1)或省略,则表范围必须按照函数范围的第一列中的值的升序排序,以返回通常为被理解为“正确”的价值。在此默认行为下,函数将返回基于完全匹​​配的值(如果找到),或者如果未找到完全匹配则返回近似匹配。

如果匹配是近似值,则函数返回的值将基于小于lookup_value的下一个最大值。例如,如果工作表1中的表中缺少“12AT8003”,则工作表2中该值的查找公式将返回“2”,因为“12AT8002”是表格范围的查阅列中的最大值比“12AT8003”。 (例如,如果目标是在税表中查找费率,则VLOOKUP的默认行为非常有意义。)

但是,如果第四个参数设置为FALSE(或0),则VLOOKUP仅在存在完全匹配时返回查找值,如果不存在则返回错误值#N / A.现在通常的做法是在IFERROR函数中包含精确的VLOOKUP,以便优雅地捕获不匹配。在引入IFERROR之前,没有使用VLOOKUP公式检查IF函数是否匹配,以检查是否存在匹配,并且一次返回实际匹配值。

虽然最初难以掌握,但deusxmach1na提出的解决方案是对VLOOKUP的一组强大替代方案的变体,可用于将列或列表的值返回到查找列的 left ,扩展到处理需要在多个标准上完全匹配的情况,或者修改为在多个标准之间包含OR和AND匹配条件的情况。

重复kcamara选择的解决方案,这个问题的VLOOKUP公式将是:

   =VLOOKUP(A1,Sheet1!A$1:B$600,2,FALSE)

答案 2 :(得分:0)

制作真值表并使用SUMPRODUCT获取值。将其复制到Sheet2上的单元格B1中,并根据需要进行复制:
=SUMPRODUCT(--($A1 = Sheet1!$A:$A), Sheet1!$B:$B)
创建真值表的部分是:
--($A1 = Sheet1!$A:$A)
这返回一个0和1的数组。当值匹配时为1,而当值不匹配时为0。那之后的逗号基本上会做我称之为“有趣”的矩阵乘法并返回结果。我可能误解了你的问题,Sheet1的A列是否有重复值?

答案 3 :(得分:-1)

尝试:

sheet 2 a1 =vlookup(sheet2a1,sheet1$a$1:$b$6,2)

然后将其拖下来。

它应该有用。