ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] loopup函数的妙用

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-3-12 09:26 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是lookup函数的两种妙用,但是我不理解,等待师傅们帮我解释
1,求A列最后一个不为空单元格的内容
lookup(2,1/(A1:65536<>""),A1:A65536)
2,求A列随后一个数字
lookup( 9E+307,A1:A65563)

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-12 09:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lookup(2,1/(A1:A65536<>""),A1:A65536)
修改了一下,不是65536,是A65536

TA的精华主题

TA的得分主题

发表于 2010-3-12 09:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-3-12 09:43 | 显示全部楼层
原帖由 wangaixiangzhao 于 2010-3-12 09:26 发表
以下是lookup函数的两种妙用,但是我不理解,等待师傅们帮我解释
1,求A列最后一个不为空单元格的内容
lookup(2,1/(A1:65536""),A1:A65536)
2,求A列随后一个数字
lookup( 9E+307,A1:A65563)

楼主看一下帮助,很容易就理解了。而理解这个函数的关键有两点:1、查找范围按升序排列;2.其结果返回等于或小于第一个参数的最大值。

TA的精华主题

TA的得分主题

发表于 2010-3-12 09:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 woaitodi 于 2010-3-12 09:43 发表

楼主看一下帮助,很容易就理解了。而理解这个函数的关键有两点:1、查找范围按升序排列;2.其结果返回等于或小于第一个参数的最大值。


说实话,看帮助还真理解不了,楼上的,你真的理解了么?

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-12 09:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我也理解不了,刚刚去论坛中找了找,也没有找到相关的帖子,呜呜

TA的精华主题

TA的得分主题

发表于 2010-3-12 09:52 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-3-12 10:07 | 显示全部楼层
原帖由 wangaixiangzhao 于 2010-3-12 09:26 发表
以下是lookup函数的两种妙用,但是我不理解,等待师傅们帮我解释
1,求A列最后一个不为空单元格的内容
lookup(2,1/(A1:65536""),A1:A65536)
2,求A列随后一个数字
lookup( 9E+307,A1:A65563)

这个函数的查找机制比较复杂
论坛上可以搜索一下
我记得gouweicao版主对这方面有进行详细的解释

[ 本帖最后由 alwstr 于 2010-3-12 10:09 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-3-12 10:07 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-3-12 10:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
第一个公式在2003无法执行,因为2003不允许把整列转换为数组,2007则不止65536行

2003里面,应该分开来写 if(A65536="",lookup(2,1/(A1:A65535<>""),A1:A65535),A65536)
(注意,这上面还没有处理A列全空的情形)

A1:A65535<>"",结果是一个逻辑值构成的向量,逻辑值参与算术运算,TRUE转换为1,FALSE转换为0, 这样1/TRUE=1而1/FALSE=#DIV/0!
关于LOOKUP,用的是两分法,遇到类型不匹配的忽略,遇到比查找值小的,则在后一个分段里面继续两分法查找, 由于所有的值不是比2小,就是类型不对,所以两分法查找最终会停在最后一个1处,1是 1/TRUE得来,也就是对应最后一个非空值的单元格 (具体查找策略论坛有专文论述)

至于第二个公式,也是同样的目的,用个同类型的大于区域中所有值的参数,去查找最后一个同类型值,这里查找的数值,9E307非常接近Excel可以直接在单元格中输入的最大数值9.99999999999999E+307,一般用这个足够了。真有意外的话,可以考虑用5^441,这个已经超过了单元格可以输入的最大数值,且非常接近Excel公式计算可达到的最大数值(2-2^-52)*2^1023
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 14:26 , Processed in 0.048695 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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