我正在尝试将工作表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
答案 0 :(得分:5)
Vlookup
是好的。另一种选择是索引和匹配,无论顺序如何都可以使用(只要列a,表1中的值是唯一的)
这是您在第2页的B列中放入的内容
=INDEX(Sheet1!A$1:B$6,MATCH(A1,Sheet1!A$1:A$6),2)
将Sheet1!A$1:B$6
和Sheet1!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)
然后将其拖下来。
它应该有用。