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. Hibernate Error: a different object with the same identifier value was already associated with the session

    在执行Hibernate的Update操作时,报错:a different object with the same identifier value was already associated w ...

  2. 在kali安装中文输入法的教程

    1终端下vi /etc/apt/sources.list  修改镜像元  (按E进行编辑 具体实例不同可能没有)  按 i进入编辑 擦除原有的几个官方源改为deb http://mirrors.ali ...

  3. SpringBoot+Mybatis+PageHelper简化分页实现

    前言 经过一段时间的测试和修改PageHelper插件逐渐走到了让我觉得靠谱的时候,它功能的就是简化分页的实现,让分页不需要麻烦的多写很多重复的代码. 已经加入我的github模版中:https:// ...

  4. java堆内存详解

    http://www.importnew.com/14630.htmljava堆的特点<深入理解java虚拟机>是什么描述java堆的 Java堆(Java Heap)是java虚拟机所管 ...

  5. 【前端】Vue和Vux开发WebApp日志二、优化gulp任务

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_2.html 项目github地址:https://github.com/shamoyuu/vue- ...

  6. 实时Web与WebSocket实践

    引言:实时Web越来越被重视,Google.Facebook等大公司也逐渐开始提供实时性服务.实时Web将是未来最热门的话题之一.  本文选自<基于MVC的JavaScript Web富应用开发 ...

  7. 3.3 与Cache相关的PCI总线事务

    PCI总线规范定义了一系列与Cache相关的总线事务,以提高PCI设备与主存储器进行数据交换的效率,即DMA读写的效率.当PCI设备使用DMA方式向存储器进行读写操作时,一定需要经过HOST主桥,而H ...

  8. AfxBeginThread和CreateThread具体区别

    1. 具体说来,CreateThread这个函数是windows提供给用户的 API函数,是SDK的标准形式,在使用的过程 中要考虑到进程的同步与互斥的关系,进程间的同步互斥等一系列会导致操作系统死锁 ...

  9. linux 时间和日期的设置

    Linux机器上的时间比较复杂,有各式各样的时钟和选项等等.机器里有两个时钟,硬件时钟从根本上讲是CMOS时钟,而系统时钟是由内核维护的. 1. 修改硬件时钟 (1)更新机器的硬件时间.命令为:hwc ...

  10. JavaScript常用对象有哪些

    JavaScript常用对象有哪些 1.String 2.Date 3.Math 4.Array 5.Number 6.Boolean