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

我试图比较工作表1中的列a与工作表2中的列a,然后将工作表1中b列中的相应值复制到工作表2(列a值匹配的列)中的列b中。 我一直在努力阅读如何做到这一点,但我不知道如果我应该尝试创build一个macros,或者如果有更简单的方法来做到这一点,也许VLOOKUP或MATCH? 我真的不熟悉这些function如何工作。

另外,如果有差别,则表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 

如果参考值(列A,表1)以升序排列,则Vlookup是好的。 另一种select是“索引和匹配”(Index and Match),无论顺序如何(只要列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作为命名范围,使用起来更方便一些。

正如kmcamara发现的那样,这正是VLOOKUP打算解决的问题,使用vlookup可以说是完成工作的最简单的替代方法。

除了lookup_value的三个参数,要search的table_range以及返回值的column_index之外,VLOOKUP还有一个可选的第四个参数,即Excel文档调用“range_lookup”。

扩展死亡四月的解释,如果此参数设置为TRUE(或1)或省略,表格范围必须按照函数的第一列中的值的升序进行sorting,以返回通常被理解为是“正确”的价值。 在此默认行为下,函数将返回基于精确匹配(如果find)的值,或者如果找不到完全匹配,则返回大致匹配。

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

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

尽pipe最初很难掌握,但deusxmach1na提出的解决scheme是VLOOKUP的一个强大替代scheme的变体,它可以用来将列或列表的值返回到查找列的左侧 ,扩展来处理更精确匹配更多比一个标准是需要的,或者被修改以并入OR以及AND匹配条件在多个标准之间。

重复kcamaraselect的解决scheme,这个问题的VLOOKUP公式是:

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

制作一个真相表并使用SUMPRODUCT来获取值。 将其复制到Sheet2上的单元格B1中,并根据需要复制下来:
=SUMPRODUCT(--($A1 = Sheet1!$A:$A), Sheet1!$B:$B)
创build真值表的部分是:
--($A1 = Sheet1!$A:$A)
这将返回一个0和1的数组。 1时值匹配和0时,他们不。 那么之后的逗号将基本上做我所说的“有趣”的matrix乘法,并将返回结果。 我可能误解了你的问题,但Sheet1的A列有重复的值吗?

尝试:

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

然后拖下来。

它应该工作。