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嵌套以高效引用多列数据的更多相关文章

  1. 个人永久性免费-Excel催化剂功能第38波-比Vlookup更好用的查找引用函数

    谈起Excel的函数,有一个函数生来自带明星光环,在表哥表姐群体中无人不知,介绍它的教程更是铺天盖地,此乃VLOOKUP函数也.今天Excel催化剂在这里冒着被火喷的风险,大胆地宣布一个比VLOOKU ...

  2. 使用vlookup嵌套INDIRECT函数实现跨表数据引用

    这是一个使用 vlookup 函数嵌套 INDIRECT 函数来实现跨工作表数据引用的教程. 某小学决定要抽查本校三年级三个班的期末考情况,抽查方法为在每个班中抽查5名学生,将这15名学生的期末考情况 ...

  3. spring jpa 实体互相引用返回restful数据循环引用报错的问题

    spring jpa 实体互相引用返回restful数据循环引用报错的问题 Java实体里两个对象有关联关系,互相引用,比如,在一对多的关联关系里 Problem对象,引用了标签列表ProblemLa ...

  4. FoxOne---一个快速高效的BS框架--数据访问(Dao)

    FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...

  5. GreenPlum高效去除表重复数据

    1.针对PostgreSQL数据库表的去重复方法基本有三种,这是在网上查找的方法,在附录1给出.但是这些方法对GreenPlum来说都不管用. 2.数据表分布在不同的节点上,每个节点的ctid是唯一的 ...

  6. 页面嵌套 Iframe 产生缓存导致页面数据不刷新问题

    最近遇到个比较古怪的问题:当页面嵌套多个 Iframe 时会出现 Iframe 里包含的页面无法看到最新的页面信息. 初步解决方案,在 Iframe 指向的页面地址后缀添加一个随机数或者时间戳.这样能 ...

  7. 高效遍历匹配Json数据,避免嵌套循环[转]

    工作中经常会遇到这样的需求:1.购物车列表中勾选某些,点击任意一项,前往详情页,再返回购物车依旧需要呈现勾选状态2.勾选人员后,前往别的页面,再次返回,人员依旧程勾选状态3.等等.... 数据结构如下 ...

  8. angular6 引用echart第一次数据不显示解决

    1 使用promise从后台返回数据后,页面还是比数据更快的加载出来,导致echart图页面加载的时候不显示问题 1.1 html <div echarts [options]="do ...

  9. 高效遍历匹配Json数据与双层for循环遍历Json数据

    工作中往往遇到这种情况,保留用户操作痕迹,比如用户选择过得东西,用户进入其它页面再返回来用户选择的的数据还在. 比如:1.购物车列表中勾选某些,点击任意一项,前往详情页,再返回购物车依旧需要呈现勾选状 ...

随机推荐

  1. Pandoc将markdown转换为word

    markdown转换为word的指令 直接将markdown转换为word pandoc -f markdown -t docx ./test.md -o test.docx 关于markdown转为 ...

  2. hdu1698 Just a Hook 线段树

    共有Q个更新,每次更新给更新的区间一个标记,表示该区间是在哪一次被更新,最后统计答案是以最近被更新的值为答案. AC代码: #include<cstdio> const int maxn= ...

  3. 算法提高 金属采集 树形DP

    题目链接:金属采集 思路:d(i, j)表示在以i为根结点的子树中使用j个机器人的最小花费.设v为u的一个子节点,从节点i使用k个机器人收集以v为根结点的能量,状态转移方程为d(u, i) = min ...

  4. yaf框架刚开始遇到的问题

    2016-10-17 17:54:13遇到的这个问题,这个问题算是比较综合性的问题,我也是查阅了很多的资料才大概明白的.这里就简单记录一下: 1.首先查看日志记录,结果如下: 根据错误日志:找寻到 ( ...

  5. 转 Caffe学习系列(3):视觉层(Vision Layers)及参数

    所有的层都具有的参数,如name, type, bottom, top和transform_param请参看我的前一篇文章:Caffe学习系列(2):数据层及参数 本文只讲解视觉层(Vision La ...

  6. linux dns子域授权 split分离解析 缓存dns服务器

    DNS子域授权作用:适用于同一个DNS组织父/子域名的解析工作由不同的dns服务器负责父dns服务器应该有为子域名迭代的能力 上下级区域属于不同的机构管理:.cn与.Anonymous.cn.cn需要 ...

  7. java 集合框架(一)概述

    一.概述 Java Collection Framework (JCF) 提供给我们一系列的类和接口,方便开发者处理集合对象. 在Java 2之前,Java是没有完整的集合框架的.它只有一些简单的可以 ...

  8. GM8180启动过程调试

    1.     burnin下的boot.s    0:    boot start        1 ;   1:    Init SMC configuration OK ;   2:    Ini ...

  9. java Socket实现简单在线聊天(二)

    接<java Socket实现简单在线聊天(一)>,在单客户端连接的基础上,这里第二步需要实现多客户端的连接,也就需要使用到线程.每当有一个新的客户端连接上来,服务端便需要新启动一个线程进 ...

  10. PHPmysqli的 其他函数 从数据库中读出数据并且打印出来

    <?php // 认识其他mysqli其他函数 header( 'Content-Type:text/html;charset=utf-8 '); require 'prepareSrarmen ...