excel函数技巧:两个查询函数的用法比较 上篇

news2024/11/18 12:41:35

EXCEL函数江湖烽烟再起,函数大擂台迎来两位重量级选手。守擂者是号称全民偶像、人见人爱车见车载的巨星级函数VLOOKUP,挑战者则是名气不大实力强劲高手的LOOKUP函数!这对与生俱来的对手,究竟会在函数擂台上擦出怎样的火花?青梅煮酒论英雄,让我们拭目以待!

***ROUND 01 基本用法比拼

VLOOKUP是在表格或区域中按列查找内容的函数,它的基本语句是:

=VLOOKUP(查找值,查找区域,返回值的列号,精确/近似匹配 )

其中:参数1必须出现在参数2的首列,参数3必须在参数1和参数2的列数之间,参数4可以表示为1或0。举个例子,某位海迷想要根据姓名找出人物对应的绰号,于是,他写了如下公式:

=VLOOKUP(D2,A1:B12,2,0)

公式说明:

VLOOKUP函数的参数1是单元格D2——尤斯塔斯·基德,它在参数2A1:B12的首列A1:A12之中,参数3的值为2,表示返回参数2A1:B12的第二列,即B列中的绰号。参数3不能大于参数2的最大列数2。参数4为0,表示精确匹配。于是整个函数公式的含义可以表达为,从A1:B12的首列中找出值等于D2的单元格,返回A1:B12的第二列中与之对应的内容。

LOOKUP函数用于查询一行或一列并查找另一行或列中的相同位置的值,它的基本语句是:

=LOOKUP(查找值,查找区域,[返回区域])

其中,参数2查找区域须按升序排列。参数3返回区域不是必填项目,当参数3被省略,则以参数2查找区域的最后一行或最后一列作为返回区域,我们称这种使用方式为数组形式。但是我们通常建议使用向量形式,即保留参数3,此时查找区域和返回区域均为一列或一行,且大小相同。同样的例子,我们看看LOOKUP是怎么做的?

=LOOKUP(D9,A1:A12,B1:B12)

什么情况?我用眼睛都能看出的查询结果LOOKUP竟然算错了,莫非LOOKUP函数失灵了?当然不是,你再返回上一段看一下,没错,标红部分,参数2查找区域须按升序排列

升序排列!升序排列!升序排列!重要的事情说三遍,是谁的小眼睛还没有看老师!

SO,如果LOOKUP函数像这样不听使唤,那你有可能掉进了LOOKUP的陷阱里,此时你应该检查参数2是否是按升序排列。如下图,当A2:A12升序排列后,得到了正确结果。

PS:与VLOOKUP的遍历查询法不同,LOOKUP的查询原理是二分法,LOOKUP陷阱正与二分法有关,感兴趣的小伙伴可以看看往期教程《LOOKUP函数用法全解(下)——LOOKUP函数的二分法原理》。

由此观之,在基本用法的较量中,LOOKUP的语句较复杂且需要对查找区域进行升序排列,不如VLOOKUP函数简洁实用。

第一回合,函数基本用法,VLOOKUP小胜!!!

***ROUND 02 模糊包含查找比拼

有时候,我们需要查找的数据并不能直接通过LOOKUP和VLOOKUP的基本用法精确匹配。换句话说,查找值和查找区域存在某种肉眼可见的对应关系,但并非完全相等。比如,对《海贼王》 这部漫画不熟悉的小伙伴可能记不全主人公路飞的全名,此时,我们如何利用路飞这个简称在对照表中找到他的绰号呢?这种问题在工作中也非常常见,比如已知供应商简称找全称、已知名字找全名等等。类似这样的问题,我们姑且称之为“模糊包含查找”。

对付“模糊包含查找”问题,我们不能简单地使用VLOOKUP或LOOKUP函数的基本用法来解决,不然结果是前者“不知所措”,后者“张冠李戴”!!!

那么遇到这种问题,VLOOKUP和LOOKUP是不是就都束手无策了呢?当然不是,作为实力强劲的明星查询函数,怎能就此溃败!和基本用法一样,VLOOKUP和LOOKUP在解决模糊包含查找问题时也是“你有你的张良计,我有我的过墙梯。”

先来看看VLOOKUP函数的张良计——通配符,星号"*"和问号"?"

星号"*":通配任意个字符,通常单独使用,表示此处可以没有字符,也可以有任意个字符。

问号"?":通配单个字符,可以重复使用,表示此处必须有与问号相同个数的字符。

我们将通配符置于查找值的前面或后面,用英文双引号将其圈定表示常量字符,并用文本连接符"&"连接起来,形成“"*"&B2”或“"*"&B2&"?"”之类的查找值作为VLOOKUP的第一参数,其余参数与基本用法一致即可。

=VLOOKUP("*"&D3&"*",A1:B12,2,0)

公式说明:查找值中使用了通配符,"*"&D3&"*"表示D3的前后均允许存在任意字符,即只要查找区域首列A2:A12中的单元格值包含D3(路飞),就返回对应的B列值。这就是VLOOKUP的模糊包含查找之道!

我们再来看看LOOKUP函数的过墙梯——FIND函数。

由于LOOKUP函数首个参数不能使用通配符,我们只能通过文本查找函数FIND来帮助LOOKUP识别查找区域中是否包含查找值。FIND函数的基本语句是=FIND(查找文本,包含查找文本的文本),它可以返回所查找的文本在包含其的文本中首字符出现的位置,例如FIND(孙,孙悟空)=1,FIND(悟空,孙悟空)=2。

我们使用FIND函数来构造一个全新的查找区域,再赋予LOOKUP的第一参数一个足够大的数字,即可完成LOOKUP的模糊查找。

=LOOKUP(100,FIND(D9,A2:A12),B2:B12)

公式说明:查找值100是一个足够大的数,它一定大于FIND函数的任意一个返回值,即它大于查找区域A2:A12的最大文本长度。FIND函数一一查找D9单元格文本“路飞”在A2:A12中的每个单元格文本中出现的位置。如果只有一个单元格包含文本“路飞”,则A2:A12单元格文本中仅有一个单元格返回数字,其余单元格均因不包含文本“路飞”而返回错误值#VALUE!。那么,由FIND函数构成的新查找区域仅由1个数字和多个#VALUE!组成。

由于LOOKUP的查找值100始终大于FIND的返回值,即查找值大于查找区域中的值。根据二分法原理,LOOKUP函数将返回最接近查找值且小于查找值的数所对应的单元格。在这个例子中,100作为查找值,查找区域中除了一个数字6,其他都是错误值,因此只能找到6。6所在的单元格是A9,而A9在返回区域B2:B12中对应的单元格是B9,所以返回B9的值“草帽”。

关键要点:LOOKUP的查找值一定要大于FIND的返回值!!!

由此观之,在模糊包含查找的较量中,VLOOKUP仅凭几个简单符号即可四两拨千斤, LOOKUP却需要劳师动众地搬来FIND救场,VLOOKUP在语句的简便性和易读性上都远超LOOKUP。

第二回合,模糊包含查找,VLOOKUP完胜!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx原理

一、master和worker二、worker当客户端发送请求,先到达master,master通知所有的worker,然后所有的worker开始竞争任务。三、一个master和多个worker有什么好处(1)可以使用nginx -s reload热部署,利用nginx进行热部署(2…

8、MariaDB11数据库安装初始化密码Navicat连接

MariaDB11安装 安装前准备 下载安装包 点我去MariaDB官网下载安装包 查看相关文档 Mariadb Server官方文档 使用zip安装 解压缩zip 将下载到的zip解压缩到想安装的位置。 生成data目录 打开cmd并进入到刚才解压后的bin目录, 执行mysql_install_db.exe程序生…

Python异步编程Future对象详解

今天继续给大家介绍Python相关知识,本文主要内容是Python异步编程Future对象详解。 一、Python Future对象简介 在上文Python Task对象详解中,我们介绍到了Task对象,而Future对象是Task对象的基类,比Task更加底层。一个Future是…

英方软件在科创板上市:总市值89亿元,胡军擎、江俊夫妇为实控人

1月19日,上海英方软件股份有限公司(下称“英方软件”,SH:688435)在上海证券交易所科创板上市。本次上市,英方软件的发行价为38.66元/股,发行2094.6737万股,募资总额约为8.10亿元,募资…

linux的工具(yum,vim)

前言 linux工具的意义Linux已经成为工作、娱乐和个人生活等多个领域的支柱,人们已经越来越离不开它。在 Linux 的帮助下,技术的变革速度超出了人们的想象,Linux 开发的速度也以指数规模增长。因此,越来越多的开发者也不断地加入开…

pycharm远程链接服务器配置

拿到gpu的节点以后开始下面的配置 1. 下载专业版pycharm,一定是专业版,community版本没有远程连接ssh的功能。 2. python编译器->添加ssh编译器->新创建服务器配置 3. 输入host名,用户名。 host名字如:vpcc-gpu032&#xf…

【自学Docker】Docker wait命令

Docker wait命令 大纲 docker wait教程 docker wait 命令可以用于阻塞一个或多个 Docker容器 直到容器停止,然后打印退出代码。 docker wait命令后面的 CONTAINER 可以是容器Id,或者是容器名。 docker wait语法 haicoder(www.haicoder.net)# docker…

基于蒙特卡洛随机潮流研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

代码审计-8 ThinkPHP框架代码审计 2

文章目录熟悉网站结构确定网站的路由1.通过分析url直接得出路由2.查看app/route.php了解参数过滤情况SQL注入举例任意文件下载与删除任意文件下载代码分析任意文件删除代码分析熟悉网站结构 首先对系统的功能点进行大致的了解,对系统的目录情况进行大致了解&#x…

9. 列表list类型详解

python3 list类型的使用 1. 基本知识 List(列表) 是 Python 中使用最频繁的数据类型。 列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套&#xff…

全球化商家平台技术探索与演进

作者:马金金 阿里全球化业务平台团队 全球化业务高速发展给平台技术带来了极大的挑战。如何差异化支撑全局业务的高效迭代?如何轻量化支撑创新业务的快速建站?本文将聚焦全球化商家平台技术架构演进,为大家分享背后的技术思考。 一…

Understanding LSTM Networks

文章目录Recurrent Neural NetworksThe Problem of Long-Term DependenciesLSTM NetworksThe Core Idea Behind LSTMs.Step-by-Step LSTM Walk Through本篇文章记述了自己对“Understanding LSTM Networks”的理解 Recurrent Neural Networks Humans don’t start their thin…

springmvc统一日志打印request和response内容

在web项目中,有不少场景需要统一处理一些和实际业务基本不相关的逻辑,比如rest接口的监控、出入参日志、操作记录、统一异常处理(避免将错误堆栈等信息直接打到web端)。如果你觉得日志打印rest接口出入参非常简单,直接getParameter()就好了&a…

Redis6学习笔记【part4】Jedis-API与手机验证码功能实现

1.连接 Jedis 第一步&#xff0c;修改 redis 的配置&#xff0c;以允许外网 ip 访问 redis。 在 redis.conf 中注释掉 bind 127.0.0.1 &#xff0c;并修改 protected-mode no 。 第二步&#xff0c;导入依赖。 <dependency><groupId>redis.clients</groupId…

Unity 进阶 之 资源文件夹下资源名的重名检查,并简单生产资源表的方法整理

Unity 进阶 之 资源文件夹下资源名的重名检查,并简单生产资源表的方法整理 目录 Unity 进阶 之 资源文件夹下资源名的重名检查,并简单生产资源表的方法整理 一、简单介绍 二、简单实现过程 三、关键代码 一、简单介绍 Unity中的一些知识点整理。 本节简单介绍在Unity开发…

python使用sentinelsat库下载sentinel影像数据

GIS遥感不分家&#xff0c;最近开始找一些影像的下载脚本了&#xff0c;这两天搞定了哨兵和modis的&#xff0c;分别贴一下 鉴于《Python中使用sentinelsat包自动下载Sentinel系列数据》这篇文章已经写得非常全乎&#xff0c;这里就简单补充一下&#xff0c;放个最简单的下载脚…

Vue CLI(Vue.js 开发的标准工具)

Vue CLI&#xff08;Vue.js 开发的标准工具&#xff09;参考描述Vue CLI获取检测项目创建项目Please pick a presetCheck the features needed for your projectChoose a version of Vue.jsPrefer placing configSave this as a preset for future projects?Save preset asFin…

[MRCTF2020]Ezaudit(随机数的安全)

目录 信息收集 代码审计 相关函数 前提知识 思路分析 补充知识 信息收集 查看源代码没有发现有用信息&#xff0c;尝试dirmap扫下目录 python3 dirmap.py -i 网址 -lcf 扫描时发现一个www.zip目录 下载到一份index.php文件&#xff0c;找到一个login.html <?php h…

docker安装pg数据库及pg数据库基本操作

一、首先准备pg数据库的docker镜像二、先创建一个文件作为pg数据库数据文件、配置文件等的外部挂载文件三、创建镜像docker run -it -d --name postgres14 --restartalways --privilegedtrue -p 5432:5432 -e POSTGRES_PASSWORDpostgres -v /home/fengyang/pg_data:/var/lib/po…

SpringBoot+VUE前后端分离项目学习笔记 - 【25 SpringBoot实现1对1、1对多、多对多关联查询】

新增课程Course页面&#xff0c;实现学生选课功能、课程教授老师选择等功能 1. 课程与授课老师是一对一关系 因为course表仅记录了teacherid&#xff0c;而页面需要的是老师的名字 select course.*,sys_user.id from course left join sys_user **on ** course.teacher_id sys…