网站首页 > 技术文章 正文
相信经常使用EXCEL的小伙伴们,对VLOOKUP函数并不陌生。这个函数是我们最常用的几个函数之一。相信,小伙伴们,也经常会用到这个函数。这里,咱们玩点其他的。
首先,给大家准备了源数据。如图:
<1> 这里我们通过VLOOKUP函数来实现反向查询。
如图1,G2 和H2 是我们的需求。要求都使用VLOOKUP函数完成。
H2很好完成,公式H2=VLOOKUP(F2,$B$2:$C$11,2,0).
G2,因为姓名列在源数据中是在员工列的后面,直接使用VLOOKUP函数肯定不行,这里EK给大家把公式直接展示出来以后为小伙伴们分析一下。方便更好地理解。公式 G2 =VLOOKUP(B2,IF({1,0},B2:B11,A2:A11),2,0)
1、 如何理解公式首先,我们来拆解G2的公式,IF({1,0},B2:B11,A2:A11)表示的是2维数组,10行2列。如下图:
2、通过图2,小伙伴们很清楚地理解了。我们只是将B列和A列的顺序通过IF函数来进行调换位置,来达到我们的查询目的。
效果图:
到这里,反向查询已经完成。
<2> 查询一个部门的所有员工
首先,准备了一个数据源:
这里,给大家准备了2种方法。
第1种方法,需要在A列中增加一列辅助列。
效果图如图所示:
这里,先分别把公式贴出来,A2=COUNTIF(A2:$A$2,$F$2),表示,在A2到A2单元格中满足F2的个数,往下填充至A11,这里A11的公式变为,A11=COUNTIF($A$2:A11,$F$2) , 表示,在A2到A11单元格中满足F2的个数.
H列公式为:H2=IFERROR(VLOOKUP(ROW($A1),$A:$C,COLUMN(B1),0) ,"")
I列公式为:I2=IFERROR(VLOOKUP(ROW($A1),$A:$C,COLUMN(C1),0),"")
公式分析:看到,H2和I2的公式都是差不多的。ROW($A1),返回1,ROW($A2) 返回2,这里可以使我们的公式更好的重用.由此我们通过VLOOKUP和辅助列,将查找员工号和姓名,转换成查找部门在D2:D当前行号的F2出现的次数ROW。由此达到我们的查找F2部门所有员工的目的。
第2种方法:
如图:
这里,没有增加辅助列,使用的是数组函数
我们可以看到图8 中G2的公式外面有花括号,这里花括号不是手输的。而是在写好的公式上通过三个组合键CTRL+SHIFT+ENTER一起按得到的。
G2的公式:=IFERROR(VLOOKUP($E$2&ROW(A1),IF({1,0},$C$2:$C$11&COUNTIF(INDIRECT("c2:c"&ROW($2:$11)),$E$2),A$2:A$11),COLUMN($B$1),),""),在公式写完以后CTRL+SHIFT+ENTER一起按。
同样,H2的公式:=IFERROR(VLOOKUP($E$2&ROW(B1),IF({1,0},$C$2:$C$11&COUNTIF(INDIRECT("c2:c"&ROW($2:$11)),$E$2),B$2:B$11),COLUMN($B$1),),""),在公式写完以后CTRL+SHIFT+ENTER一起按。
然后一起往下填充。效果如图8 所示。
分析公式:
1、H列和G列的公式类似,这里只分析G2,分析之前将G2公式分解。INDIRECT("c2:c"&ROW($2:$11)) ,返回的是单元格引用C2:C2,G3则返回C2:C3。
2、我们将组合函数 $C$2:$C$11&COUNTIF(INDIRECT("c2:c"&ROW($2:$11)),$E$2),B$2:B$11) 是数组函数,我们在I列给大家展示一下。如图所示:
3、IF({1,0},$C$2:$C$11&COUNTIF(INDIRECT("c2:c"&ROW($2:$11)),$E$2),A$2:A$11),第一个案例里已经说过,我们知道的是返回一个二维数组。如图:
4、VLOOKUP($E$2&ROW(B1),IF({1,0},$C$2:$C$11&COUNTIF(INDIRECT("c2:c"&ROW($2:$11)),$E$2),B$2:B$11),COLUMN($B$1),),G2对应的$E$2&ROW(B1) 值为武技部1,G3对应的$E$2&ROW(B2)值为武技部2,这里相信小伙伴们就能理解了,在图10 的数组中利用VLOOKUP函数查找出对应的工号。
5、最后利用IFFEROR函数对整个函数进行防错,错误值显示“”,对G2和H2中公式往下拉可以得到图8的效果,目的完成。
分析完毕,如果小伙伴们还是不清楚的话,可以在评论区告诉我。我会尽最大努力帮助大家哦。最后,感谢小伙伴们的观看,我是EK。如果上述内容能够帮助到你们,希望你们能点赞,关注,评论,你们不清楚的地方我会尽力为小伙伴们解答,谢谢小伙伴们的支持。我会给小伙伴们带来更多关于EXCEL的小技巧。
- 上一篇: LOOKUP中0,1是什么鬼,困扰我多年的疑惑,这课讲明白了
- 下一篇: word中公式输入方法
猜你喜欢
- 2025-01-18 弱类型语言的php对于 0 、"0"、"000" 、"00" 判断与处理问题
- 2025-01-18 word中公式输入方法
- 2025-01-18 LOOKUP中0,1是什么鬼,困扰我多年的疑惑,这课讲明白了
- 2025-01-18 Excel – 在多个匹配结果中,按规定查找出第n个结果
- 2025-01-18 从入门到提高一一函数定义域
- 2025-01-18 C语言return 0一定要有吗?
- 2025-01-18 什么是0℃恒温器?
- 2025-01-18 VLOOKUP函数只能从左向右匹配查找?与IF函数搭配实现逆向查找
- 2025-01-18 TCP连接状态的多种判断方法
- 2025-01-18 吞没选股指标(选股指标)
- 最近发表
-
- 如何在 Linux 上安装 Java_怎么在linux中安装jdk
- Linux中tar命令打包路径相关问题_linux怎么用tar打包一个目录
- 常用linux系统常用扫描命令汇总_常用linux系统常用扫描命令汇总表
- VM下linux虚拟机新建过程(有图)_linux虚拟机创建新用户命令
- 系统小技巧:迁移通过Wubi方式安装的Ubuntu系统
- 文件系统(八):Linux JFFS2文件系统工作原理、优势与局限
- 如何利用ftrace精确跟踪特定进程调度信息
- prometheus网络监控之fping-exporter
- hyper linux的实操步骤,hyper-v批量管理工具的使用指南
- 2021年,运维工程师笔试真题(二)(附带答案)
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)