Excel如何将两个表,根据有相同数据的一列数据,自动填写到另外一张表?
12 个回答
谢谢邀请
这问题 @Wicky Liang 已经回答了,已经把方法告诉题主了。本来打算把邀请忽略掉,但是:
发现题主把测试数据都上传到网盘了,这还是我第一次遇到这么认真、这么考虑回答问题者便利的提问者。所以必须得回答,就把 @Wicky Liang 答案的具体操作写出来吧。
你的问题就是日常工作中最常用的应用之一:查找引用
满足此需求的方法, @Wicky Liang 已经介绍了,临时性的可用筛选,永久性的用查找引用函数。下面分别介绍。
- 高级筛选
如果数据源单元格和筛选的目标区域在同一个工作表,如下图
使用高级筛选即可满足,高级筛选有以下功能:
- 可以使用单元格区域中的值作为的条件,如题中的表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。
要解决这个问题可能需要理解的知识点:
-
单元格地址的相对引用和绝对引用,也就是函数中$A$1, $A1 ,A$1 在向下、向右填充时有什么区别。
- 数据格式(数字、字符),通过数据→分列操作改变数据格式。
请自行搜索学习,最多一小时也就学会了。
以后这样的问题尽量发到技术论坛上去,比如excelhome,有很多学习期的网友在等待你的练习题。