Excel单元格匹配二(index与match搭配应用)

前言

在日常学习生活中,会有很多Excel上高级操作的需求,而单元格匹配填充就是十分常见但是很多人又不会的操作。比如你有一个年纪的总成绩单,你有你们班的名单,那么你想要你们班的成绩单。可能你会说,我一个个CTRL+F查找不行吗,人少了还行,当数量多到几千的时候,就没那么好找了。

此方法使用到了函数,属于excel偏中级用法,需要有一定函数基础,如果使用不来请传送

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必须有顺序排列

使用思路

  1. =index(待取列,match(匹配值,匹配列,0)找到第一行对应的数据
  2. 向下填充,找到这一列的所有值
  • 函数嵌套的用法
  • 使用match找到改行关键字在总表中的行数
  • 使用index从待取列中的match返回的行数对应的行中取出该确定值
  • 向下填充该公式,会自动改变值

案例

演示所用的表格

小表.xlsx,你所需要填数据的表,下载地址:小表.xlsx

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

  • 为了最大化演示,采用跨工作簿的模式,当然也可以跨sheet或者直接在同一个sheet中使用。

  • 本次演示是需要从大表中查询小表里的学生,并填写其所在班级。

  • 为了演示方便,以下有三个工作簿:大表、小标、工具表

    • 大表是数据总表,你需要从这里调取数据

    • 小表是你需要填写的表

具体步骤

  1. 小表中第一行输入

=INDEX([大表.xlsx]Sheet1!$D:$D,MATCH(C2,[大表.xlsx]Sheet1!$C:$C,0))

  1. 向下拖动改行实现自动填充,或者选中该列,点击开始->填充->向下

小技巧

  1. 按下Tab键可以快速选中填充提示项的所选函数名
  2. 选择一个单元格,可以使用相对引用C2、绝对引用$C$2或者直接鼠标左键点选
  3. 选一个区域。
    • 填参数时可以直接在表中拖拽选中区域
    • 也可以选择按shift+鼠标左键自动选中上次点击和这次点击之间的所有区域
    • 也可以直接点击列标题(A~Z..)
  4. 填函数对应参数时可以直接使用上述选则方法,支持跨sheet、跨工作簿、表内多种方式
  5. 当你在编辑公式时,上方的编辑框会同步在各个表格、工作簿中,不论你后来选中的是哪个表,最终都会填在你最初写=的地方

GIF演示

GIF演示地址

注意事项

  • 当数据很多的时候,直接选一列有时候会选到65535,此时会多选很多空格导致匹配效率低,甚至出错,推荐把列区域正好选在数据区域而不是直接点选列号

  • 此方法是函数法,还有另外一个函数直接可以搞定,vlookup() ,但是函数有限制,个人认为复杂程度是一样的,建议学习index和match的嵌套方法

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注