前言
在日常学习生活中,会有很多Excel上高级操作的需求,而单元格匹配填充就是十分常见但是很多人又不会的操作。比如你有一个年纪的总成绩单,你有你们班的名单,那么你想要你们班的成绩单。可能你会说,我一个个CTRL+F查找不行吗,人少了还行,当数量多到几千的时候,就没那么好找了。
此方法使用到了函数,属于excel偏中级用法,需要有一定函数基础,如果使用不来请传送
经典使用场景
- 某列数据的匹配
- 找出小表中的人在大表中的补集
- 。。暂未想出第三种
使用道具
- MS office中的Excel 或者 WPS中的Excel(免费版即可)
- 函数index()
- 函数match()
- 灵活清醒的头脑
函数介绍
index()
在给定的单元格区域中,返回特定列交叉单元格的值或引用。
- 第一个参数是数组Array,某一行或者某一列或者某一块矩阵区域
- 第二个参数是行号Row_num,返回这个区域的第几行
- 第三个参数是列号Column_num,返回这个取与的第几列
- 如果是单个行或者列,则只需有第三个/第二个参数即可,也可以使用矩阵区域
match()
返回符合特定顺序的项在数组中的相对位置
- 第一个参数Lookup_value是数组中所要匹配的值,可以是数值‘文本或者逻辑值,也可以是引用
- 第二个参数Lookup_array包含该值的数组,可以是行,也可以是一列,但是不能是一个区域
- 第三个参数Match_type匹配 形式,0代表精确匹配返回相等的第一个值,1是返回大与的最小值,-1是小于的最大值,取1和-1必须有顺序排列
使用思路
=index(待取列,match(匹配值,匹配列,0)找到第一行对应的数据- 向下填充,找到这一列的所有值
- 函数嵌套的用法
- 使用match找到改行关键字在总表中的行数
- 使用index从待取列中的match返回的行数对应的行中取出该确定值
- 向下填充该公式,会自动改变值
案例
演示所用的表格
小表.xlsx,你所需要填数据的表,下载地址:小表.xlsx

大表.xlsx,数据总表,下载地址:大表.xlsx

-
为了最大化演示,采用跨工作簿的模式,当然也可以跨sheet或者直接在同一个sheet中使用。
-
本次演示是需要从大表中查询小表里的学生,并填写其所在班级。
-
为了演示方便,以下有三个工作簿:大表、小标、工具表
-
大表是数据总表,你需要从这里调取数据
-
小表是你需要填写的表
-
具体步骤
- 小表中第一行输入
=INDEX([大表.xlsx]Sheet1!$D:$D,MATCH(C2,[大表.xlsx]Sheet1!$C:$C,0))
- 向下拖动改行实现自动填充,或者选中该列,点击
开始->填充->向下
小技巧
- 按下
Tab键可以快速选中填充提示项的所选函数名 - 选择一个单元格,可以使用相对引用C2、绝对引用$C$2或者直接鼠标左键点选
- 选一个区域。
- 填参数时可以直接在表中拖拽选中区域
- 也可以选择按
shift+鼠标左键自动选中上次点击和这次点击之间的所有区域 - 也可以直接点击列标题(A~Z..)
- 填函数对应参数时可以直接使用上述选则方法,支持跨sheet、跨工作簿、表内多种方式
- 当你在编辑公式时,上方的编辑框会同步在各个表格、工作簿中,不论你后来选中的是哪个表,最终都会填在你最初写=的地方
GIF演示
注意事项
-
当数据很多的时候,直接选一列有时候会选到65535,此时会多选很多空格导致匹配效率低,甚至出错,推荐把列区域正好选在数据区域而不是直接点选列号
-
此方法是函数法,还有另外一个函数直接可以搞定,vlookup() ,但是函数有限制,个人认为复杂程度是一样的,建议学习index和match的嵌套方法