VLOOKUP和MATCH嵌套以高效引用多列数据
VLOOKUP函数在日常工作中十分常见,以至于你要是没用过VLOOKUP函数,你都不好意思说你懂EXCEL。
一般情况下,我们需要在源数据中查找某个指定列的数据,就会用到VLOOKUP函数(如果是指定行的数据,则用HLOOKUP函数)。这个时候“指定列”一般习惯用常数(如1,2,3,4,5)。
那么,如下图,当需要在绿色单元格引用源数据表中的多列函数时,公式/函数该如何写?

乍一看,这个不难啊,三个字段“性别”,“兴趣”“电话”分别用VLOOKUP函数写个公式就好了。嗯,用三个VLOOKUP函数固然可以。但是,如果有5个字段,20个字段呢?这个,是不是有点烦躁?
VLOOKUP函数与MATCH函数嵌套
今天我们要用VLOOKUP函数与MATCH函数嵌套使用获取多列数据,以提高效率。
1. VLOOKUP函数
语法:VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
第三参数 col_index_num 可以是常量(指定第几列),也可以是变量(通过函数运算返回一个数字)。如果能在第三参数写进一个函数,是不是可以根据不同字段返回不同列数呢?
2. MATCH函数
含义:返回指定数值在指定数组区域中的位置
语法:MATCH(lookup_value, lookup_array, match_type)
从MATCH函数含义可以看出,MATCH函数返回的是“位置”(数字),恰好可以满足我们的要求。
3. VLOOKUP函数与MATCH函数嵌套使用
现在我们在I2单元格输入以下公式:
=VLOOKUP($H2,$A$1:$F$9,MATCH(I$1,$A$1:$F$1,0),0)
然后复制粘贴到所有的绿色单元格,或者向右,向下拖拽。可以看到结果完全正确。

在这里,MATCH函数将查找“性别”,“兴趣”,“电话”在A1到F1中的位置,再将返回值(数字)赋与VLOOKUP第三参数。那么,无论有多少个需要查找的字段,这个MATCH函数都相应返回对应的位置数字。也就是说,我们只需要写这一个公式就够了。
4. 成败关键—混合引用
$A$1 绝对引用。复制或者拖拽,引用单元格固定不变。
A1 相对引用。复制或者拖拽,引用的单元格根据行/列位置变化而变化。
$A1或者A$1 混合引用。复制或者拖拽,$符号后面的行/列保持不变。
在上面的例子中,我们需要在固定在H列中找到查找值,所以VLOOKUP函数中一定要在H2的H前加上$符号,得到$H2;
同时,我们需要固定在第一行中找到查找的字段,所以MATCH函数中一定要在I1的1前加上$符号,得到I$1。
如此,才能确保我们在复制/拖拽过程中单元格被正确引用。如果希望进一步加深理解绝对/相对/混合引用,可以尝试做一个“九九乘法表”。如下图:

5. 延伸思考
COLUMN函数,ROW函数返回的分别是单元格所在第几列,第几行。在这个例子中能不能用VLOOKUP函数和COLUMN函数嵌套?效率如何?在什么情况下时候嵌套更好用呢?
这几个问题留给大家思考,有兴趣的话欢迎私信我交流讨论。
飞机从北京飞往纽约,一定不止一条航线,可以往北极方向飞,也可以往南极方向飞,还可以跨太平洋飞。但是最后航空公司一般会选择往北极方向飞。因为这条航线效率高,经济效益最好。
同理,在使用EXCEL的过程中,我们也需要不断思考,如何让我们的工作效率变得更高?
Copyright reserved @ 黄波艺带你玩转Excel。欢迎转载,但请注明出处。
VLOOKUP和MATCH嵌套以高效引用多列数据的更多相关文章
- 个人永久性免费-Excel催化剂功能第38波-比Vlookup更好用的查找引用函数
谈起Excel的函数,有一个函数生来自带明星光环,在表哥表姐群体中无人不知,介绍它的教程更是铺天盖地,此乃VLOOKUP函数也.今天Excel催化剂在这里冒着被火喷的风险,大胆地宣布一个比VLOOKU ...
- 使用vlookup嵌套INDIRECT函数实现跨表数据引用
这是一个使用 vlookup 函数嵌套 INDIRECT 函数来实现跨工作表数据引用的教程. 某小学决定要抽查本校三年级三个班的期末考情况,抽查方法为在每个班中抽查5名学生,将这15名学生的期末考情况 ...
- spring jpa 实体互相引用返回restful数据循环引用报错的问题
spring jpa 实体互相引用返回restful数据循环引用报错的问题 Java实体里两个对象有关联关系,互相引用,比如,在一对多的关联关系里 Problem对象,引用了标签列表ProblemLa ...
- FoxOne---一个快速高效的BS框架--数据访问(Dao)
FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...
- GreenPlum高效去除表重复数据
1.针对PostgreSQL数据库表的去重复方法基本有三种,这是在网上查找的方法,在附录1给出.但是这些方法对GreenPlum来说都不管用. 2.数据表分布在不同的节点上,每个节点的ctid是唯一的 ...
- 页面嵌套 Iframe 产生缓存导致页面数据不刷新问题
最近遇到个比较古怪的问题:当页面嵌套多个 Iframe 时会出现 Iframe 里包含的页面无法看到最新的页面信息. 初步解决方案,在 Iframe 指向的页面地址后缀添加一个随机数或者时间戳.这样能 ...
- 高效遍历匹配Json数据,避免嵌套循环[转]
工作中经常会遇到这样的需求:1.购物车列表中勾选某些,点击任意一项,前往详情页,再返回购物车依旧需要呈现勾选状态2.勾选人员后,前往别的页面,再次返回,人员依旧程勾选状态3.等等.... 数据结构如下 ...
- angular6 引用echart第一次数据不显示解决
1 使用promise从后台返回数据后,页面还是比数据更快的加载出来,导致echart图页面加载的时候不显示问题 1.1 html <div echarts [options]="do ...
- 高效遍历匹配Json数据与双层for循环遍历Json数据
工作中往往遇到这种情况,保留用户操作痕迹,比如用户选择过得东西,用户进入其它页面再返回来用户选择的的数据还在. 比如:1.购物车列表中勾选某些,点击任意一项,前往详情页,再返回购物车依旧需要呈现勾选状 ...
随机推荐
- 来了解并防范一下CSRF攻击提高网站安全
看一下我从网上找的原理图,结合举例描述,多看一遍你就知道怎么回事了. CSRF是什么呢?CSRF全名是Cross-site request forgery,是一种对网站的恶意利用,CSRF比XSS更具 ...
- UVA - 1371 Period 二分+dp
思路:设字符串x的长度为n,y的长度为m,那么答案一定在[0, m]之间,那么可以二分求答案. d(i, j)表示第一个串前i个字符至少需要经过多少次才能的到第二个串的前j个字符,转移方程d(i, j ...
- 蓝桥杯 求最大值 dp
这题很暴力的一个DP,d[i][j]表示前i个数对选择一些Ai的和为j的最大Bi和. 状态转移方程: dp[i][j]=max(dp[i][j],dp[i-1][j-sc[i].a]+sc[i].b) ...
- 3D打印技术在医疗上的实际应用与实验室研究
2018-01-17 Chris 免费3D打印模型资源站 预计阅读时间:5-10分钟 关键字:3D打印髋关节.脊柱置换产品,3D打印技术辅助精准截骨,义齿,生物墨水(BioInk),干细胞 随着& ...
- JDBC底层原理
Class.forName(“com.mysql.jdbc.Driver”)是 强制JVM将com.mysql.jdbc.Driver这个类加载入内存,并将其注册到DriverManager类,然后根 ...
- 【前端】jQuery移动端左滑删除
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/left_slide_menu.html <!doctype html> <html> &l ...
- VS2005 添加onTimer定时器
SetTimer(1,300,NULL); void CchangeDisplayDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调 ...
- SystemVerilog语言简介(二)
6. 用户定义的类型 Verilog不允许用户定义新的数据类型.SystemVerilog通过使用typedef提供了一种方法来定义新的数据类型,这一点与C语言类似.用户定义的类型可以与其它数据类型一 ...
- 个性化WinPE封装方法 ----最后实战“制作WinPE3.0图文教程”
经过前几讲,主要目的就是准备一些"原材料",熟悉一些"命令",实际上是"战前演练准备".下面要进入"实战状态",成败在此 ...
- 石子归并 51Nod - 1021
N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价.计算将N堆石子合并成一堆的最小代价. 例如: 1 2 3 4,有 ...