ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11313|回复: 20

[原创] 关于vlookup,你可能还不知道的15件事

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-5-5 22:18 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 流浪铁匠 于 2018-5-5 22:39 编辑

郑重声明,本贴从第7条起已不适合新手阅读,避免对vlookup这个函数的认知与应用发生偏差
本文主要是我对这个函数及其相关性质与涉及字符的一些疯狂测试的特殊结果应用与结论
主要针对人群为函数发烧友
新手请不要由于这些性质对这个函数的理解发生误解
工作中vlookup函数还是很实用而且准确性很高的(前提是相对熟悉这个函数的普通性质(本文顶多1-2条属于这部分范畴))

1,vlookup的1参为文本时,字符数不能超过255个,否则返回vaule错误
a1.jpg

2,vlookup的1参为数值时,对数值精度的识别是高于15位的(浮点精度)
a2.jpg
3,vlookup忽略大小写的性质很多人都知道,但估计很少有人知道一共支持忽略1835组左右的字符的所谓大小写性质,除了英文字母外希腊/罗马/西里尔文等等乃至个别汉字都可被vlookup相互识别
所以会出现以下几个有趣的查找情况
a3.jpg

4,excel存在多个小写字母转为相同大写字母的情况,但vlookup(与其他忽略大小写能力)的函数,仅能相互识别其中大写字母可以转化的那个小写字符        不识别其他能转成该大写字母的小写字符        

a4.jpg
由于upper和proper的小写转大写能力有个别差异
有时存在个别多个小写能转为相同大写的情况
此时vlookup只能相互识别该大写字符能用lower或者proper转化的对应小写字符

5,虽然vlookup在4参为0或false时为精确查找,但排除上述2点后还是有至少8个字符是vlookup自己找不到自己的(排除通配性的影响)

a5.jpg

6,上述字符中甚至至少还有1个是vlookup自己找不到自己但是能用别的字符识别自己的…… a6.jpg







补充内容 (2018-10-15 21:20):
据群友测试反馈,5/6的性质在365版本无效,但2016测试是存在该性质的,365不愧是永远最新的版本

关于vlookup,你可能还不知道的15件事.rar

95.39 KB, 下载次数: 282

本帖涉及的各项内容原件

评分

4

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-5 22:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 流浪铁匠 于 2018-5-5 22:41 编辑

7,说到通配性,有2个特殊字符用于vlookup的1参也具有类似通配符的性质,而且这2个字符是默认右对齐的,我把这类字符称为镜像字符
a7.jpg

8,除了上述特殊字符,unichar(173)作为vlookup的1参可以精确查找下识别3709个uncode字符(不含通配符)
a8.jpg

9,更厉害的是char(1),作为vlookup1参,可以找到全部字符,测试表明这个字符的性质类似 ”* ”,但具有一定局限性,可能要在单元格内先键入该字符激活其所谓的通配性
a9.jpg

10,vlookup由于各种因素造成查找结果出错时,错误值的优先级为1参本身为错误值(结果返回该错误值) > 找不到对应时的 #N/A 错误 >超出查找范围的 #REF! 错误
注:本条仅考虑较为常见的查找出错原因,后面有条更极端
a10.jpg

11,vlookup在1/3/4 参数为数组时,在数组维度一致时的数组计算的优先级为 4参>1参> 3参
a11.jpg
即先识别4参的查找方式再识别1参的常量数组(区域数组方式录入的伪内存数组,否则需t/n+if(1转化),最后才识别3参的列数数组


12,vlookup的3参是支持小数的,临界舍入点和index/round等函数一致为0.99999976146501这个特殊值
a12.jpg

13,vlookup的4参也是支持小数的,一般有人会告诉你们0等价false,非0等价true,但其实足够小的数值就会被识别为false,不信你就试试9^-323
a13.jpg

14,对于unicode编码大于65535的特殊字符,mid提取一半配合通配符在vlookup进行查找时确实是以编码而不是字符进行查找的
但如果是left/right进行提取,识别的还是字符
a14.jpg

15,vlookup的3参为负数时的错误值类型发现
帮助内提示返回value错误
数值足够大时返回num错误,这2个都好理解
但是,大约在-1e9 至 -1e10 范围之间,错误值开始会变成ref错误
这个错误值直到达到excel的最大数值上限才变成num错误
即3参为大约在 -1e10至 -1e308范围,vlookup的结果为ref错误
而这个错误值与引用有关,这让我怀疑vlookup曾经可能被设计为支持反向,(纯粹瞎猜,有朋友说是vba的数据类型的原因,但除非微软进行说明,无法理解这部分返回的错误值为ref类型的原因)
a15.jpg

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-5 22:44 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-5 22:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以上为这段时间对这个函数的各种发现
一堆旁门左道
因为有些内容更趋向于bug或者特殊情况,
但是,这些内容可能会对这个函数的理解有更深入的帮助

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-5 22:47 | 显示全部楼层
流浪铁匠 发表于 2018-5-5 22:45
以上为这段时间对这个函数的各种发现
一堆旁门左道
因为有些内容更趋向于bug或者特殊情况,

佩服专研精神!

TA的精华主题

TA的得分主题

发表于 2018-5-5 22:49 | 显示全部楼层
很佩服你的钻研精神。

对于99%的用户来讲,excel只是工作中的一个工具,是解决工作中的实际问题。楼主举得这些例子基本没有应用场景。

TA的精华主题

TA的得分主题

发表于 2018-5-5 23:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-5-6 16:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
佩服!佩服!钻研精神值得学习。

TA的精华主题

TA的得分主题

发表于 2018-5-6 20:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-5-6 22:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主这么努力!感谢分享。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-10 15:40 , Processed in 0.037706 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表