Excel如何将两个表,根据有相同数据的一列数据,自动填写到另外一张表?

问题已按照回答中说的vlookup函数解决,感谢回答的各位。 本来觉得比较麻烦的,这次有点颠覆了我的想法,以前对Excel的认识太浅显了些。 ——— …
关注者
220
被浏览
617,729

12 个回答

谢谢邀请

这问题 @Wicky Liang 已经回答了,已经把方法告诉题主了。本来打算把邀请忽略掉,但是:

发现题主把测试数据都上传到网盘了,这还是我第一次遇到这么认真、这么考虑回答问题者便利的提问者。所以必须得回答,就把 @Wicky Liang 答案的具体操作写出来吧。


你的问题就是日常工作中最常用的应用之一:查找引用

满足此需求的方法, @Wicky Liang 已经介绍了,临时性的可用筛选,永久性的用查找引用函数。下面分别介绍。

  1. 高级筛选

如果数据源单元格和筛选的目标区域在同一个工作表,如下图



使用高级筛选即可满足,高级筛选有以下功能:

  • 可以使用单元格区域中的值作为的条件,如题中的表2就是条件区域,
  • 可以将筛选结果复制到指定单元格,如果指定单元格指定了字段,那么只返回源表符合条件记录的部分字段。

先看返回全部字段的操作:


筛选后,由于“复制到”的单元格区域没有指定返回的字段,所以筛选出的结果会将源表格的所有字段都列示出来,效果上看好象F列字段1是多出来的,如下图



如前所述,实际上我们可以目标单元格指定返回的字段,比如在F1单元格输入“字段2”、G1单元格输入“字段3”,然后在“复制到”栏,指定为F1:G1,此时聪明的Excel会自动显示"sheet1!指定"

如下图:


返回结果如下:


细心的你可能已经发现了,返回的字段2、字段3的值与字段1不是正确的对应。这正是我要说的,原因如下:

  • 条件字段的顺序要与源表顺序一致,否则结果是错乱的。

另外,由于本题源表与目标表不在同一工作表,如果在测试表2点击“高级筛选”,然后按上面的操作筛选的话,会提示

遇到这个问题,可以这样解决:

  • 在目标表格(即测试表1)点击“高级筛选”,然后再按前面的操作,分别选定列表区域、条件区域、目标区域,即可。


  • 2、函数法

Vlookup函数

函数解释:vlookup(查找对象,查找区域,要返回查找区域的第几列,精确查找还是模糊查找)

回答本题的公式:

=VLOOKUP($E2,[测试数据2.xls]Sheet1!$A$2:$C$12,2,0)

=VLOOKUP($E2,[测试数据2.xls]Sheet1!$A$2:$C$12,3,0)

如果列数较多,可以嵌套返回列号的函数

=VLOOKUP($E2,[测试数据2.xls]Sheet1!$A$2:$C$12,COLUMN(),0)

注意:

查找对象必须在查找区域的第一列

由于你的表格有上千行,建议使用vlookup函数查找引用。

提供两个方案:

  • 临时性的,用高级查找。
  • 长久使用的,用查询函数:vlookup,或者index嵌套match。

要解决这个问题可能需要理解的知识点:

  1. 单元格地址的相对引用和绝对引用,也就是函数中$A$1, $A1 ,A$1 在向下、向右填充时有什么区别。
  2. 数据格式(数字、字符),通过数据→分列操作改变数据格式。

请自行搜索学习,最多一小时也就学会了。

以后这样的问题尽量发到技术论坛上去,比如excelhome,有很多学习期的网友在等待你的练习题。