ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] lookup函数对于筛选唯一值的应用

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-8-14 22:07 | 显示全部楼层 |阅读模式
网上找到一个公式,如下:LOOKUP(,1/(COUNTIF(C$1:C1,A$2:A$10)-1),A$2:A$10),A列是被筛选区域,里面有很多重复的单元格,C列是筛选之后的结果区域。公式测试无误,请问这个公式的原理是什么,用excel拆分里面的函数,试了还是理解不了,请大神回答,跪谢。
172473f082025aafdb7c04d8a6edab64034f1a0a.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-8-14 22:11 | 显示全部楼层
挽尊挽尊挽尊挽尊

TA的精华主题

TA的得分主题

发表于 2021-8-15 11:43 | 显示全部楼层
这个公式,使用了lookup与countif两个函数并嵌套使用。
1、countif(参数1,参数2),意思是统计在参数1区域中,有参数2的个数。一般参数1是数组或某一区域,参数2是单个值。但在这个公式中,参数2是一组区域(不是单个值或文本),所以返回结果就成了一个数组值(而不是单个值)。有几个注意的地方:
A、参数1(C$1:C1)是动态的,也就是第2个C1的行未锁定,这样可以随着公式下拉而相应增加行(把上个公式返回的结果也加进来了),且第1个是从第1行开始的。
B、countif返回的结果要减1,目的是为其变为0,然后再作为除数的分母,最终返回错误(让lookup好忽略)。如果不减1,就恰恰相反了。

C、最后把减的结果,作为分母,再用1去除,让原来有1再减1后为0的都变为错误,为lookup忽略之用。
三步结果为lookup的第2参数。
2、lookup(搜索值,搜索区域,返回值的区域),作用是在“搜索区域”(参数2)中”搜索值“(参数1),返回“返回值的区域”(参数3)相同位置的值。如果搜不到,则返回小于或等于该搜索值(参数1)的最大值;其中错误忽略(这正是上面的B步骤故意功效)。
这里搜索值9参数1)就是0,搜索区域(参数2)就是countif的返回结果,返回区域A2:A10(参数3)。显示参数2是没有0的,则匹配小于或等于0的(-1)的最大的那个所在行的值。
最后,若加一个容错函数则就更完美:
C2=IFERROR(LOOKUP(,1/(COUNTIF(C$1:C1,A$2:A$10)-1),A$2:A$10),""),下拉公式。


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-8-15 18:03 | 显示全部楼层
tony@cq 发表于 2021-8-15 11:43
这个公式,使用了lookup与countif两个函数并嵌套使用。
1、countif(参数1,参数2),意思是统计在参数1区域 ...

感谢感谢大神,讲的太仔细了

TA的精华主题

TA的得分主题

发表于 2021-8-16 10:17 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-16 02:45 , Processed in 0.021522 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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