认识这对搭档,解决 90% 的查询问题

a419e69bebeb19905e6eb4369208de1e.jpeg

在excel里,对于“查找”的实现,vlookup绝对是使用得最为频繁的一个函数。

但是,遇到下面问题,vlookup就没用了。

下面的表格记录了员工的信息,现在想通过“姓名”查找对应的“工号”。如图所示,通过输入不同的姓名,就会返回对应的工号。 

b86d21b94ec0ce77bf1a30d0b57835cd.gif

在原数据里,“工号”在A列,“姓名”在B列,如果是通过工号来查询对应的姓名,用vlookup函数就能秒杀。但现在是通过B列来查询对应的A列的内容,是反向查询

vlookup函数在查询的时候只能从左往右查询,且查询对象所在的列,必须要在查询区域的第一列,也就是说,只能通过A列来查询B列或其它列,而不能通过B列来反向查询A列。

你可能会说了,把原数据里的A列和B列调换一下顺序不就轻易地避开了上面的问题吗?但是,这样做原始数据就发生了改变,在工作中很多时候我们拿到的表数据,标题中是会有合并单元格的,这就更限制了列的移动。

像这种反向查询问题,就必须祭出我们的“大杀器”了:index+match组合,你就可以更灵活地实现查询。

1. 什么是index?

index函数能根据指定的行号和列号来返回一个值。语法规则如下:

index(单元格区域,第几行,第几列)

单元格区域:就是要查找的数据范围;

第几行:在查找范围的第几行;

第几列:在查找范围的第几列。(其中“第几列”是可以省略的。)

对index函数有了基本的认识后,下面通过案例来看下如何使用。

沿用上面案例中的员工信息表,现在想要查询员工“猴子大大”的工号。 

ba68a2184feb83f269cbe96a644e9807.jpeg

要找的工号在A列,姓名“猴子大大”在第7行,所以输入公式=i-dex($A$2:$A$11 , 7)。

也就是告诉index函数,我们要查找的是A2:A11这个区域的第7行的信息,于是返回了正确的工号(A2002)。

聪明的你肯定发现了端倪:我在这儿是用肉眼来看,然后用手指头戳着一个一个数,最后才知道猴子大大位于第7航。

那么,问题就来了。如果数据量非常大,或者要查找的员工非常多,难道我还要靠肉眼来看靠手指来数数吗?

所以,这时候就得要有一个函数来告诉index,让它去取第几个。下面隆重请出index的最佳搭档:match函数。

2.什么是match?

match在英文中是匹配的意思,所以大家应该很自然就能想到它的作用就是进行数据匹配。

匹配什么呢?

就是拿你要查找的值,去指定的区域进行匹配。匹配上了,就会返回目标值所在的单元格位置。它的语法规则是:

match(要查找的值,在哪里找,是否精确匹配)

要查找的值:就是我们想匹配的值。在这个案例中是姓名“猴子大大”;

在哪里找:去哪个区域找想匹配的值。在这个案例中就是去哪里找姓名“猴子大大”,就是要去“姓名”列中找;

是否精确匹配:它有三个选项,-1,0,1。其中,0代表的是精确匹配。在这个案例中是要在“姓名”列精确匹配“猴子大大”,所以选择的值是0。-1表示查找大于等于“要查找的值”。1表示查找小于等于“要查找的值”。

这个案例中,我们愉快地就写下了这样的公式

=match("猴子大大",$B$2:$B$11,0)

返回结果是7,表示匹配到“猴子大大”在姓名列的第7行。

在案例演示中,我们把要查找的猴子大大,放在了单元格H2,所以上面的公式也可以改为:

=match(H2,$B$2:$B$11,0)

返回的结果同样也是7。

3. index+match搭档

在最开始的时候,我们靠肉眼来查找来数数。但是现在有了match函数,我们就把这个查找的任务丢给它,让它来传递。因此原本的公式

=index($A$2:$A$11 , 7)

就可以把公式中的7修改成match函数

=index($A$2:$A$11 , match(H2,$B$2:$B$11,0) )

也就是说,使用match函数来为index函数的第二个参数提供值,告诉index要返回的是第几个值。 

所以,通过index+match函数的组合,我们就可以打造一个下面这样的查询系统啦。

69df337f7ea866097ebf0273fc12d8c5.gif

无论你要查找的范围有多大,要查找的量有多少,都是秒秒间就能有结果啦。

(动图中所示的下拉菜单是用“数据验证”来实现的,有关这个功能的用法,可戳链接详细了解)

4. 如何实现多条件查找?

上面小试牛刀之后,我们再来进阶一下。index+match的最强大的之处是,它们能实现多条件查找。

上面案例演示中,我们先match出猴子大大在B列的位置,然后再用index返回A列对应的值,得出了对应的工号。但是,如果我还想查询出猴子大大的其它信息呢?如下图:

db8f38eee1f0cf220f66f76766c26063.jpeg

除了工号,我还想查其对应的“基本工资”“部门”“籍贯”信息。而且,这些信息与数据源的顺序是不一致的。

怎么写公式呢?

有人说,那我就用案例一查询其工号的方法呗,依葫芦画瓢分别再写三个公式,一一来查“基本工资”“部门”“籍贯”信息。

这是一个方法,却是一个很笨的方法。实际工作中,我们面对的可能是很庞大的数据,要查询的列会很多,手动地一个列对应一个公式的写下来,不仅效率低下,还容易出错。

那有没有办法可以只写一次公式,就能返回所有列的结果吗?办法当然是有的。

首先,我们来理清一下:要用index函数来返回值,我们就得告诉它,我们要在指定区域的哪里去找。如要查询“工号”,就得告诉它,要去第1列查找;要查找“基本工资”,就得告诉它,要去第6列查找;要查“部门”,就得告诉它,要去第5列查找。那谁来告诉它呢?用match来告诉它。

match不是最擅长匹配吗?好,就用它来定位位置信息。我们要查询“工号”,我们就用match来匹配,定位到“工号”在数据源里,它是位于第1列;要查询“基本工资”,我们就用match来匹配,定位到“基本工资”在数据源里,它是位于第6列。

把match得到的位置信息就存储起来,然后传给index,index收到定位信息后,就去指定区域对应的位置查询,于是返回对应值,查询结束。

好了,思路清楚后,我们在I2单元格写下公式吧:

=index($A$2:$F$11,

             match($H2,$B$2:$B$11,0),

             match(I1,$A$1:$F$1,0))

公式解读:我们要在A2:F11这个区域查找,区域这么大,在哪里找呢?给个定位信息吧。好,让match来告诉你横坐标、纵坐标。

0cf771a00b7d8f359bec75f49894ff0f.jpeg

根据单元格H2的引用值,用match来匹配“猴子大大”,定位到他所在的行,为第7行,作为横坐标

那纵坐标呢?因为要查他的工号,所以,再用match对“工号”进行匹配,“工号”在数据源A1:A11里,位于第1列,作为纵坐标

好了,在A2:F11的这个区域里第7行第1列交叉处的单元格的值,就为猴子大大的工号信息。对于 “基本工资”的查找,同理,在指定区域的第7行第6列查找;其它信息,依次类推。

因为公式还要往右填充,所以,要把单元格H2进行列的锁定,防止公式在填充过程中发生了列的变化。因此,得出了上面的公式。

再通过“数据验证”使得H2的单元格内容自由选择,就能打造一个查询系统了: 

d965e7fbc4974f92864f2e23c5d8725c.gif

想查询哪个员工的哪些信息,也就只是眨眼的功夫。

5.总结

通过index+match这对搭档,我们可以灵活自如地解决90%的查询问题。match用来定位,index根据定位来返回指定位置的值,你学会了吗?

f2c93a0cef3ecf64996fa6f56fd3c6cd.jpeg

 ⬇️点击「阅读原文」

 免费报名 数据分析训练营

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/100486.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencv 进阶10-人脸识别原理说明及示例-cv2.CascadeClassifier.detectMultiScale()

人脸识别是指程序对输入的人脸图像进行判断,并识别出其对应的人的过程。人脸识别程 序像我们人类一样,“看到”一张人脸后就能够分辨出这个人是家人、朋友还是明星。 当然,要实现人脸识别,首先要判断当前图像内是否出现了人脸&…

Databend 开源周报第 107 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 理解连接参数 …

Linux知识点 -- Linux多线程(二)

Linux知识点 – Linux多线程(二) 文章目录 Linux知识点 -- Linux多线程(二)一、线程互斥1.背景概念2.多线程访问同一个全局变量3.加锁保护4.问题5.锁的实现 二、线程安全1.可重入与线程安全2.常见情况3.可重入与线程安全的联系 三…

excel文本函数篇2

本期主要介绍LEN、FIND、SEARCH以及后面加B的情况: (1)后缀没有B:一个字节代表一个中文字符 (2)后缀有B:两个字节代表一个中文字符 1、LEN(text):返回文本字符串中的字符个数 2、…

七夕给TA满分宠爱!浪漫攻略为约会加分

浪漫的七夕将至,无论是异地恋人还是约会情侣,怎么能缺少节日仪式感~精心策划的约会计划,让浪漫“超级加倍”。 美好的二人世界,共度甜蜜时光,当然需要提前做好攻略,风和日丽的好天气能为约会加分不少。在规…

Ubuntu软件源、pip源大全,国内网站网址,阿里云、网易163、搜狐、华为、清华、北大、中科大、上交、山大、吉大、哈工大、兰大、北理、浙大

文章目录 一、企业镜像源1、阿里云2、网易1633、搜狐镜像4、华为 二:高校镜像源1、清华源2、北京大学3、中国科学技术大学源 (USTC)4、 上海交通大学5、山东大学6、 吉林大学开源镜像站7、 哈尔滨工业大学开源镜像站8、 西安交通大学软件镜像…

java网络编程

目录 1. 什么是网络编程? 2. 网络编程三要素 2.1 IP 2.1.1 常见CMD命令 2.1.2 InetAddress 2.2 端口号 2.3 协议 3. UDP通信程序 3.1 UDP的三种通信方式 4. TCP通信程序 4.1 三次握手四次挥手 1. 什么是网络编程? 在网络通信协议下,不同计算机上运行的程…

如何在前端实现WebSocket发送和接收TCP消息(多线程模式)

目录 第一步:创建WebSocket连接第二步:监听WebSocket事件第三步:发送消息第四步:后端处理函数说明 当在前端实现WebSocket发送和接收TCP消息时,可以使用以下步骤来实现多线程模式。本文将详细介绍如何在前端实现WebSoc…

抖音短视频SEO矩阵系统源码开发

一、概述 抖音短视频SEO矩阵系统源码是一项综合技术,旨在帮助用户在抖音平台上创建并优化短视频内容。本文将详细介绍该系统的技术架构、核心代码、实现过程以及优化建议,以便读者更好地理解并应用这项技术。 二、技术架构 抖音短视频SEO矩阵系统采用前…

情人节特别定制:多种语言编写动态爱心网页(附完整代码)

写在前面案例1:HTML Three.js库案例2:HTML CSS JavaScript案例3:Python环境 Flask框架结语 写在前面 随着七夕节的临近,许多人都在寻找独特而令人难忘的方式来表达爱意。在这个数字时代,结合创意和技术&#xff0…

多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测

多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测,WOA-CNN-GR…

【JavaEE基础学习打卡04】JDBC之MySQL数据库安装

目录 前言一、JDBC与数据库二、MySQL数据库1.MySQL数据库2.MySQL服务下载安装3.MySQL服务启动停止4.MySQL命令 三、MySQL客户端安装总结 前言 📜 本系列教程适用于JavaWeb初学者、爱好者,小白白。我们的天赋并不高,可贵在努力,坚持…

EmbedPress Pro 在WordPress网站中嵌入任何内容

EmbedPress Pro可让您通过高级自定义、自定义品牌、延迟加载和更多惊人功能嵌入源。为古腾堡块和Elementor编辑器提供支持的一体化 WordPress 嵌入解决方案。使用 EmbedPress 在古腾堡创建交互式内容。使用 EmbedPress 的古腾堡块立即将任何内容嵌入到您的网站。 网址: EmbedP…

CentOS下载ISO镜像的方法

目录 一、CentOS 介绍 二、进入CentOS 官方网站 三、步骤 一、CentOS 介绍 CentOS,中文意思是社区企业操作系统是Linux发行版之一,是免费的、开源的、可以重新分发的开源操作系统。 CentOS Linux发行版是一个稳定的,可预测的&#xff0…

API自动化管理: 从繁琐到轻松

在数字化时代,API(应用程序编程接口)在软件开发中扮演着至关重要的角色。然而,API管理可能会变得十分繁琐,耗费大量时间和资源。那么,如何实现API自动化管理,从而节省时间、提高效率&#xff0c…

海外ios应用商店优化排名因素之应用名称

当我们的应用出现在搜索结果中时,用户会更详细地查看并转到我们的应用程序页面,引入页面视图,点击下载应用,或者是直接忽略。所以在获得曝光度之后如何决定完全取决于优化因素,例如应用图标、屏幕截图和视频预览以及其…

Python+request+unittest实现接口测试框架集成实例

这篇文章主要介绍了Pythonrequestunittest实现接口测试框架集成实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 1、为什么要写代码实现接口自动化 大家知道很多接口测试工具可以实现对接口的测试&#xf…

JVM——垃圾回收器G1+垃圾回收调优

4.4 G1(一个垃圾回收器) 定义: 取代了CMS垃圾回收器。和CMS一样时并发的。 适用场景: 物理上分区,逻辑上分代。 相关JVM参数: -XX:UseG1GC-XX:G1HeapRegionSizesize-XX:MaxGCPauseMillistime 1) G1 垃圾回收阶段 三个回收阶段&#xff0…

Pydev·离线git包

Pydev离线git包 1.下载离线git包:eclipse.egit.repository-4.4.0.201606070830-r.zip 2.将解压后目录:eclipse.egit.repository-4.4.0.201606070830-r\plugins下的jar文件放到 ide\eclipse\plugins目录下 3.重启pydevIDE 百度搜索站长工具:h…