EXCEL必备工具箱--超强查找功能的自定义函数(替代Vlookup)

EXCEL必备工具箱,一款自带免费多标签的EXCEL工具箱,同时支持office和WPS,绝大部分操作可撤销。

官网:https://www.ahzll.top

下载地址:https://www.ahzll.top/HELP/PAGE/blog_5488e3a901000ayc.html

日常工作中,我们经常会遇到从一张很多数据的表中查找的情况,比如:根据某个人的姓名(或只知道名字中的一个字)查找其成绩或者工资之类,我们平时用的查找功能的函数都是lookup,或者Vlookup、Hlookup之类,但这些函数都有功能的缺点:

一、要求查找区域必须已经排过序;

二、只能返回第一个目标值。

三、不能模糊查找。

所以,本人在对网上的相关函数进行改写,形成了这个查找函数CZ,既可以模糊查找,也可以跨工作表查找,还可以查找某个值所在区间,是目前各种查找函数中功能最强的函数!

CZ函数示例https://www.ahzll.top/HELP/example/CZ函数示例.xlsm


此外,根据网友建议,工具箱集成网上比较流行的其他两个自定义查找函数,功能比没有CZ齐全:

1、Mlookup, 请参阅: 详细介绍

2、wlookup,请参阅:详细介绍

CZ、wlookup、mlookup比较:

EXCEL必备工具箱--超强查找功能的自定义函数(替代Vlookup)

CZ与wlookup各种查找对照示例,请参阅:https://www.ahzll.top/HELP/PAGE/blog_5488e3a90102yf1f.html

Wlookup函数与CZ函数对照示例https://www.ahzll.top/HELP/example/Wlookup函数示例.xlsm

CZ函数示例https://www.ahzll.top/HELP/example/CZ函数示例.xlsm


超级查找函数CZ具体使用方法:

要使用这个自定义函数,需要在EXCEL必备工具箱为当前文档添加自定义函数(这个文档只需添加一次):

EXCEL必备工具箱--超强查找功能的自定义函数(替代Vlookup)

完成添加后,就可以使用了。

公式介绍:

CZ(查找值, 查找值所在区域, 目标值所在列,确认返回第几个目标值,是否模糊查找)

各参数含义:

1、查找值:是要查找的值,可以输入:"王芳",也可以鼠标点击获取;

2、查找值所在区域:比如本例王芳在B列 可以输入B:B,也可以鼠标选择B列;

3、目标值所在列或区域:比如本例要查找工资,则为C列,可以输入C:C,也可以鼠标选择c列,也可以输入3(代表该列在工作表中第三列),也可以鼠标随便选择第三列上的一个单元格,比如:C20,系统都会最终返回3,代表第3列。

4、确认返回第几个目标值:可以不输入,代表返回第一个目标值。如果查找结果多于一个,需要返回第几个目标值就输入数字几(如果这里输入了0,则会列出所有查找结果,并用逗号隔开;如果输入负数,就代表倒数第几个,比如:-1,就代表倒数第一个)

5、模糊查找:输入1(默认值,可以不输入),代表普通模糊查找;输入0,代表精确查找;输入2,代表深度模糊查找。 

比如:

查找值为:个税  被查找的支付为个人所得税。

模糊查找=0时,肯定查不到,因为要求精确匹配,即查找值必须为个人所得税才能找到;

模糊查找=1时,肯定查不到,因为要求普通模糊查找,但“个人所得税”这个字符串中没有“个税”两个字;如果被查找字符串为“个税起征点”则可以找到,因为包含了“个税”这两个字。

模糊查找=2时,可以找到,因为是深度模糊查找,因为“个人所得税”按从左到右的顺序,可能被简称为“个税”,也就是说,深度模糊查找允许按从左到右的顺序从被查找对象中抽取多个字符来进行查找,通常用于一些名称的简称。

6、区间:可选参数,可以不输入,默认是0,即代表不进行区间查找。

如果区间=-1,则返回查找值所处区间最接近的低一档的值;

如果区间=1,则返回查找值所处区间最接近的高一档的值。


具体使用介绍:

比如有这么一张工资表:

EXCEL必备工具箱--超强查找功能的自定义函数(替代Vlookup)

要查找王芳的工资,可以按以下多种方式输入公式:

1、 =CZ(B5,B:B,3)
(B5:是指B5单元格,B:B是代表B列,3代表第3列,因为工资在第3列)
2、 =CZ("王芳",B1:B12,C20)
3、 =CZ("王芳",B1:B12,3)
结果会显示1200元
要查找第2个王芳的工资,可以输入公式:
=CZ(B5,B:B,3,2)
或者:
=CZ("王芳",B:B,3,2)
如果这里输入了0 : =CZ("王芳",B:B,3,0)  则结果为:1200,1400
如果这里输入了-1:=CZ("王芳",B:B,3,-1)  则结果为:1400 ,因为1400最大,所以是倒数第一
如果这里输入了-2:=CZ("王芳",B:B,3,-2)  则结果为:1200 ,因为1400最大,所以是倒数第二是1200
(提醒:工具箱12.50版,开始支持参数0,15.90版开始支持参数为负数)
如果要查找所有姓名带“勇”的工资,可以输入以下公式:
=CZ("勇",B:B,3)
返回第1个(陈勇)的工资:1150
=CZ("勇",B:B,3,2)  返回第2个(李勇)的工资:1250
=CZ("勇",B:B,3,3)  返回第3个(刘勇)的工资:1450
=CZ("勇",B:B,3,4)   返回第4个(卢勇)的工资:1500

关于普通模糊查找/深度模糊查找/精确查找的说明:

假设有员工信息、工资两张数据表,当前工作表示员工信息,想查找工资表中张三的工资,如果采用默认的普通模糊查找公式 =CZ(B2,工资!A:A,工资!B:B)  ,结果会查出排在在前面张三丰的工资:

EXCEL必备工具箱--超强查找功能的自定义函数(替代Vlookup)

这时候要输入公式:

=CZ(B2,工资!A:A,工资!B:B,,0),最后一个0代表是精确查找(即:逻辑值false),就可以得到正确结果。

EXCEL必备工具箱--超强查找功能的自定义函数(替代Vlookup)

区间查找:

EXCEL必备工具箱--超强查找功能的自定义函数(替代Vlookup)

不少企业存在这种按业绩提成的情况,比如需要查询销售600件,应该是多少提成比例:

输入公式:=cz(600,A1:A7,B1:B7,,,-1),可以到的结果:3%

这个-1就代表是区间查找,并返回符合条件的上一档的值(就低不就高):  500=>3%,1000=>4% ===>3%

有些公司比较特殊,达到这个业绩希望高靠(就高不就低):                       500=>3%,1000=>4% ===>4%

输入公式:=cz(600,A1:A7,B1:B7,,,1),可以到的结果:4%

特别提醒:如果正好是临界点,那么无论填1还是-1,结果都是一样的,都是对应值,比如:

查询销售500件,对应的提成比例都是3% :=cz(500,A1:A7,B1:B7,,,-1)=3%;  =cz(500,A1:A7,B1:B7,,,1)=3%


动画演示:

EXCEL必备工具箱--超强查找功能的自定义函数(替代Vlookup)


改进记录:

15.90版改进:

(1)增加对数据已用区域的预先判断;对于数字不管是文本型还是数值型,均不再区别对待,更加符合用户需要。

(2)返回的目标值支持倒数第几个(确认返回第几个目标值填负数),支持区间查找(区间必须是升序的)

15.91版:查找出来的身份证号可以正常显示