一鱼三吃(配凉菜)-员工信息检索函数公式实战技巧
Lv.2 潜力创作者
📌WPS表格中,完成同一个工作任务有多种函数公式编写方法。”一鱼三吃“,殊途同归,让我们以一份员工资料表为示例,分别用不同的函数解决,看看谁更高效、更灵活。
平行世界。
"要想回家早,表格得学好!",同事小白自从我引用WPS社区内的技术大🐮牛张俊老师的这句"名言"后,便对表格技巧产生了浓厚的兴趣,天天缠着我问这问那。
这天,小白通过OA传过来一个‘非常大有限公司员工资料表.xlsx”,急匆匆地跑来问我:‘老兄,我想通过‘员工资料表’工作表,依据’姓名‘这一列的数据,填充另一个‘员工信息检索’的内容,用函数公式该怎么写?”
我微微一笑,拍了拍他的肩膀说:‘好的,咱们今天就拿这份员工表,一鱼三吃,分别用不同的函数公式来完成,看看👀哪个更好!”
我打开‘员工资料表”工作簿文件,工作里里面密密麻麻地记录着公司员工的各种信息,包括员工ID、姓名、入职日期、联系方式等。我对两个工作表分别进行了筛选,便对小白说:‘你小子,两个表都有重复的信息,你会挖坑考验老汉我了?”
小白😳急忙摆手说:‘我冤枉啊!我没有,这表是我刚收到的,你是怎么发现的?”
我说:‘对工作表进行'筛选','计数'选项默认是‘降序’,括弧里的数字大于一的记录都是重复项,不信你看。”!
小白定睛一看,果然如此,连连点头说:‘原来筛选还能这么用,这招真妙!要删除吗?”
我说:‘用函数公式当前不用删除!”
小白问:‘那接下来呢?函数公式该怎么写?”
我说:‘别急,咱们一步步来。‘
第一种方法:INDEX+MATCH组合函数
🥇先说第一种方法——INDEX+MATCH组合函数。”INDEX 负责"取第几个",MATCH 负责"算出是第几个",两者一内一外配合,可以灵活地从‘员工资料表’中按姓名查找到任意列的信息。"
以「员工信息检索」第2行(姓名=王五)为例,4 个单元格分别写:
写完 B2:E2 后,选中这四个单元格向下拖拽填充到第 20 行,19 个姓名就全部自动回填完成。这样,一份完整的员工信息检索表就通过函数公式搞定了。
🥈参数解读
💡MATCH函数公式=MATCH($A2, 员工资料表!$B$2:$B$51, 0)
MATCH函数的第 1 参数 $A2:查找值,即”员工信息检索‘工作表当前单元格数值。"王五"在”员工资料表‘工作表姓名列里是第 14 个,所以 MATCH 返回 14。
第 2 参数 员工资料表!$B$2:$B$51:查找区域,源表的姓名列。
第 3 参数 0:精确匹配,必须与姓名完全一致才返回位置。
‘然后用INDEX公式再到目标列里按行号取值,这样就完成了整个查找过程。”
💡INDEX函数公式=INDEX(员工资料表!$F$2:$F$51, 14)
📌为什么要锁定 $ 符号
写法 | 含义 | 作用 |
$A2 | 列锁定、行不锁定 | 向右填充(B→E列)时始终引用 A 列姓名;向下填充时自动跟随每行姓名 |
员工资料表!$B$2:$B$51 | 整个区域锁定 | 防止向下/向右填充时查找区域跟着偏移 |
🥉容错机制
如果目标表里输入了源表中不存在的姓名,公式会显示错误。需要容错的话可以外面包一层:
B列(员工ID): =IFERROR(INDEX(员工资料表!$A$2:$A$51, MATCH($A2, 员工资料表!$B$2:$B$51, 0)), "未找到")
C列(基本工资): =IFERROR(INDEX(员工资料表!$F$2:$F$51, MATCH($A2, 员工资料表!$B$2:$B$51, 0)), "未找到")
D列(联系电话): =IFERROR(INDEX(员工资料表!$G$2:$G$51, MATCH($A2, 员工资料表!$B$2:$B$51, 0)), "未找到")
E列(联系地址): =IFERROR(INDEX(员工资料表!$H$2:$H$51, MATCH($A2, 员工资料表!$B$2:$B$51, 0)), "未找到")
第二种方法 XLOOKUP函数
🥇XLOOKUP 是新一代查找函数,比 INDEX+MATCH 更简洁直接,只需指定查找值、查找区域和返回区域,一次就能搞定,不需要 INDEX 和 MATCH 嵌套。
以「员工信息检索」第 2 行为例:
单元格 | 要取的字段 | XLOOKUP 公式 |
B2 | 员工ID(源表A列) | =XLOOKUP($A2, 员工资料表!$B$2:$B$51, 员工资料表!$A$2:$A$51, "未找到") |
C2 | 基本工资(源表F列) | =XLOOKUP($A2, 员工资料表!$B$2:$B$51, 员工资料表!$F$2:$F$51, "未找到") |
D2 | 联系电话(源表G列) | =XLOOKUP($A2, 员工资料表!$B$2:$B$51, 员工资料表!$G$2:$G$51, "未找到") |
E2 | 联系地址(源表H列) | =XLOOKUP($A2, 员工资料表!$B$2:$B$51, 员工资料表!$H$2:$H$51, "未找到") |
🥈参数解读
XLOOKUP函数公式 =XLOOKUP($A2, 员工资料表!$B$2:$B$51, 员工资料表!$F$2:$F$51, "未找到")
第 1 参数 $A2:查找值,即‘员工信息检索”工作表中的姓名。
第 2 参数 员工资料表!$B$2:$B$51:查找区域,源表的姓名列。
第 3 参数 员工资料表!$F$2:$F$51:返回区域,直接返回对应行的基本工资。
第 4 参数 "未找到":若姓名不存在,则返回此提示文本,自带容错功能。
🥉XLOOKUP函数与 INDEX+MATCH 的对比
对比项 | INDEX+MATCH | XLOOKUP |
公式长度 | 嵌套两层,每个公式要写两段区域 | 一层直达,结构更短 |
容错 | 需用 IFERROR 包裹 | 第 4 参数直接指定兜底值 |
查找方向 | 只能在单一方向(行/列)内匹配 | 支持行、列、二维区域反向查找 |
可读性 | "取第几个"思路偏底层 | "在哪列找、取哪列"更符合直觉 |
兼容性 | 几乎所有 Excel/WPS 版本都支持 | 需 Office 365 / Excel 2021 / WPS 较新版本 |
第三种方法 FILTER函数
🥇 公式写法
FILTER 的定位和前两个函数方法完全不同——它是"筛选",不是"查找"。以当前场景同样能写出公式:以「员工信息检索」第 2 行(姓名=王五)为例,FILTER 函数的写法如下:
单元格 | 要取的字段 | FILTER 公式 |
B2 | 员工ID(源表A列) | =FILTER(员工资料表!$A$2:$A$51, 员工资料表!$B$2:$B$51=$A2, "未找到") |
C2 | 基本工资(源表F列) | =FILTER(员工资料表!$F$2:$F$51, 员工资料表!$B$2:$B$51=$A2, "未找到") |
D2 | 联系电话(源表G列) | =FILTER(员工资料表!$G$2:$G$51, 员工资料表!$B$2:$B$51=$A2, "未找到") |
E2 | 联系地址(源表H列) | =FILTER(员工资料表!$H$2:$H$51, 员工资料表!$B$2:$B$51=$A2, "未找到") |
同样填充 B2:E20 即可。
🥈参数解读
参数 | 本例取值 | 含义 |
1. 返回数组 | 员工资料表!$F$2:$F$51 | 要取哪一列的值(和 XLOOKUP 第 3 参数同思路) |
2. 条件 | 员工资料表!$B$2:$B$51=$A2 | 逐个比对姓名列,看哪些行等于当前行姓名,生成一串 TRUE/FALSE |
3. 无匹配时 | "未找到" | 一条都没筛出来时显示该文本 |
🥉FILTER 与 XLOOKUP/INDEX+MATCH 的本质区别
这是关键——三者对"重复姓名"的处理完全不同:
场景 | INDEX+MATCH | XLOOKUP | FILTER |
姓名唯一(你当前的情况) | 返回该员工资料 | 返回该员工资料 | 返回该员工资料 |
姓名重复(一人多条记录) | 只返回第一个 | 只返回第一个 | 返回全部记录并向下溢出 |
小白看着对比表格,若有所思地点了点头,指着‘姓名重复”那一行问道:‘原来如此!也就是说,如果表里有重名的员工,用INDEX+MATCH和XLOOKUP都只能查到第一个人的信息,而FILTER能把所有同名的人都筛出来?”
我说:”是的。‘
小白问:”那我该怎么选呢?三种方法各有什么适用场景?‘
我回答说:‘问得好!我给你总结一下——记住这个口诀就行:”
要稳、要发给所有人 → INDEX+MATCH(兼容性最好,当前表格用的这个)
新版软件、想写法最简 → XLOOKUP(一对一查找首选)
要查"一个条件对应多条记录"(如按部门、按工资批量筛人) → 换成 FILTER,这才是它的主场
小白恍然大悟:‘原来如此!那数据透视表也能做到吗?”
💡我回答:‘数据透视表本质是分组汇总工具,拿它做"一对一检索"属于绕道,效果和限制都与查找类公式差异很大。不过,如果你想快速统计各部门人数、汇总工资总额,用它反而更高效。两者各有各的用武之地,关键看你想要的是‘查一条’还是‘算一批’。”
小白问‘老哥,如果不使用函数公式,还有什么办法?”
我笑着回答:‘其实,这个员工信息检索任务,用WPS表格中内置的‘高级筛选’工具,不用开VIP也很香!”
‘高级筛选可以一次性把‘员工资料表”中符合条件的记录复制到指定区域,但和查找公式最大的不同是——它是一次性操作,源表数据变化后需要手动重新筛选,而函数公式会自动更新。下面我演示一下操作步骤,你跟着做一遍就会了。”
第一步,‘员工资料表’中确定好要检索的列(可略过),点击‘数据”选项卡,找到‘筛选”组按钮,点击打开‘高级筛选”对话框。
第二步,在‘列表区域”中选中‘员工资料表”的整个数据区域(含表头),在‘条件区域”中选中‘员工信息检索”中你预先设置好的条件区域(比如在空白处写上‘姓名”和要查找的名字),在‘复制到”中选中目标区域的第一个单元格,勾选‘选择不重复的记录”,点击‘确定”即可。
第二步操作完成后,需要先关闭‘高级筛选”对话框,然后确认筛选结果已正确复制到目标区域。若源表数据有更新,只需重新执行一次高级筛选即可。
第三步,在‘高级筛选”对话框中,确认‘列表区域”已正确显示员工资料表的完整数据区域,然后点击‘确定”完成筛选。
这样,符合条件的员工记录就会一次性复制到你指定的位置,而且因为勾选了‘不重复”,重名员工也只会保留一条,省心又高效。
小白看完演示,拍手叫好:‘原来高级筛选这么方便,不用写公式也能搞定!那它和函数公式比起来,到底哪个更好用呢?”
我回答说:‘这个问题问得好!我帮你从几个关键维度对比一下,你就清楚了。”
“首先是’更新方式‘:函数公式是‘活’的,源表数据一变,结果自动刷新;高级筛选是‘死‘的,源表更新后必须手动重新执行一遍,否则结果不会变。
”再次是’输出形态‘:函数公式支持跨工作表动态引用,查询结果可以嵌在报表中间,随查随改;高级筛选则是把记录‘复制‘到指定区域,适合一次性导出、批量提取。“
”最后是’适用场景‘:如果你要做一个长期使用的员工查询表,或者模板要发给别人反复填写,函数公式更靠谱;如果只是临时整理一批数据、导出一份名单,高级筛选又快又省事。“
小白听完连连点头:‘明白了!简单说就是‘长期用公式,临时用筛选’,对吧?”
我笑着竖起大拇指:‘没错,总结得很到位!公式虽好,但不是万能钥匙;筛选虽简,也要看场景。两者相辅相成,用对地方才是真本事。好了,这‘一鱼三吃’加‘高级筛选’的实战技巧都教给你了,回去自己多练几遍,遇到实际问题就知道该怎么选了。”
小白挠了挠头,笑着问:‘老哥,你这都讲到高级筛选了,那这算是‘一鱼四吃’了吧?前面三种函数方法加上这个筛选工具,简直是把这份员工表翻来覆去做了四道菜!”
我哈哈一笑:‘你这小子,还挺会总结!不过严格来说,高级筛选属于WPS表格自带的‘数据工具’,跟函数公式不是一个路子,咱们这叫‘一鱼三吃,外加一道凉菜’更贴切。”
小白也被逗乐了:‘哈哈,‘一鱼三吃’配‘凉菜’,这比喻真形象!那我今天算是把查数据的本事都学到手了。”
Lv.2 潜力创作者
Lv.1 新人创作者
Lv.2 潜力创作者
Lv.2 潜力创作者
Lv.2 潜力创作者
Lv.3 优质创作者
Lv.2 潜力创作者
Lv.1 新人创作者
Lv.2 潜力创作者