ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] [求助]如何在单元格中取一列数中最后一个非零的数值?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-1-7 17:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用bosco_yip在2004-12-4 21:33:00的发言:

A11公式 :

=LOOKUP(2,1/(A1:A10<>0),A1:A10)

这个2是什么意思?

TA的精华主题

TA的得分主题

发表于 2005-1-7 19:38 | 显示全部楼层

我才终于看明白,这个公式是很妙。

如果函数 LOOKUP 找不到 lookup_value(这里就是2,换成比1大的数都行),则查找 lookup_vector 中小于或等于 lookup_value 的最大数值。

lookup函数中的查找范围的数值默认以升序排列,所以找到的是数据范围中最后一个比2小的数。

TA的精华主题

TA的得分主题

发表于 2005-7-20 22:08 | 显示全部楼层
以下是引用ZPX在2004-12-20 9:43:00的发言:

没看明白?谁给解释一下。

班门弄斧一下,昨天才看了apolloh版主的Match(,0/()),match在乱序数据列中的查找原理,现在就来解释一下。

=LOOKUP(2,1/((A1:A10<>0)*ISNUMBER(A1:A10)),A1:A10)

先来看看((A1:A10<>0)*ISNUMBER(A1:A10))

首先这是个数组公式,所以A1:A10<>0会得到10个逻辑值,当单元格中的值不为0时得TRUE,否则为FALSE,而ISNUMBER(A1:A10)得到的也是10个逻辑值,因为TRUE=1,FALSE=0。因此两式一乘就等于是做了一个AND操作(这在论坛的一篇叫“骗你爱上数组公式中”有详细讲解)。这样的结果就是当单元格中的值为数字并且不等于0时的值为1,其余值为0这么一个数组。

用1去除以这个数组时会得到两种值,1和#DIV/0!。而lookup会将与查找值类型不一致的值给忽略掉,这样,所有值不等于0并且为数值的单元格会得到一个1的值,而查找值是2,根据lookup的帮助信息中知道lookup函数会把查找区域中的内容认为是以以升序顺序放置的,当找不到等于查找数值的值时会返回数组中小于或等于 lookup_value 的最大值。

当找到第一个1时,一比较,小于2。所以lookup会接着往下走,结果又找到一个1,仍然比2小,所以还会继续走下去,直到走到最后一个1时,发现后面已经没有数字了,就把这一个位置返回。这就是满足条件的最后一个不等于0的数值的位置,得到位置后lookup就可以返回该位置的值了。

语言表达能力较差,看起来可能较费劲。多包涵。

下面的文件可能会有点帮助。

FGIsINYu.rar (1.99 KB, 下载次数: 162)
[此贴子已经被作者于2005-7-20 22:20:20编辑过]

TA的精华主题

TA的得分主题

发表于 2005-7-21 08:28 | 显示全部楼层

介绍一下bosco_yip 对相关公式的测速结果:

=LOOKUP(2,1/(A1:A10<>""),A1:A10) - 为效率较低的函数公式 - 公式一 : LOOKUP(9.99999999999999E307,A:A) - 公式二 : LOOKUP(2,1/(A1:A65535<>””),A1:A65535) - 公式一 要比公式二, 速度效率快约500倍

==========

INDEX(A1:A10,MAX(IF(A1:A10<>"",ROW(A1:A10)))) - 亦是效率较低的函数公式 - 公式一 : LOOKUP(9.99999999999999E307,A:A) - 公式三 : INDEX(A:A,MAX(IF(A1:A65535<>””,ROW(A1:A65535)))) - 公式一 要比公式三, 速度效率快约396倍

TA的精华主题

TA的得分主题

发表于 2005-7-21 08:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-7-21 08:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-7-21 13:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

ding

[此贴子已经被作者于2005-7-21 14:01:29编辑过]

TA的精华主题

TA的得分主题

发表于 2005-7-21 15:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-12-24 19:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-12-24 19:53 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-28 06:23 , Processed in 0.045354 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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