ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] [求助]一个数值和文字混排的单元格,如何提取数值参与计算?

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-13 11:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:FIND
论坛真是藏龙卧虎之地啊!gvntw漂亮的出招、山菊花专业而幽默的解招让我佩服不已!不错,相当地不错!

TA的精华主题

TA的得分主题

发表于 2006-4-13 13:15 | 显示全部楼层
以下是引用[I]山菊花[/I]在2006-4-13 10:23:35的发言:[BR]

谢谢版主,又提供好思路。

与看不懂的朋友共同学习一下:

以“收入562.00元”为例

1、FIND()告诉我,0-9在文本中第一次出现的位置。

用Find()在指定的文本中查找0-9,会返回第一次出现的位置,如果没有会返回一个错误值,聪明的gvntw,在文本后面连接上1234567890,让Find()不再有借口返回错误值,请放心,它不会影响后面的结果。在编辑栏中,像下面一样,用鼠标将这一段文本抹黑,然后按F9。

=LOOKUP(9E+307,--MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&1234567890)),ROW(INDIRECT("1:"&LEN(A1)))))

2、对着 Min(),王小丫说:恭喜你,答对了,第一个数字在第3位。

如果你还怀疑,可以这再次抹黑,并按F9。

=LOOKUP(9E+307,--MID(A1,MIN({7;8;5;12;13;3;4;16;17;18}),ROW(INDIRECT("1:"&LEN(A1)))))

3、神奇魔术师 Mid() ,一个文本变出许许多多。

让事实说话,继续抹抹黑,按F9。开始位置不变,长度依次增1,形成一个数组,数组的个数等于文本长度(Row()的结果)。后面的会出现相同的情况,没关系,还是不影响结果的。

=LOOKUP(9E+307,--MID(A1,3,ROW(INDIRECT("1:"&LEN(A1)))))

4、如果忽略了--,还是功亏一篑。

看看,它的结果会是什么呢?

=LOOKUP(9E+307,--{"5";"56";"562";"562.";"562.0";"562.00";"562.00元";"562.00元";"562.00元"})

5、Lookup() 总是那么沉着,他闭着眼睛说,我就要最后面那个数字。

=LOOKUP(9E+307,{5;56;562;562;562;562.00;#VALUE!;#VALUE!;#VALUE!})

9E+307 是一个非常大的数,在任何时候都适用,如果你知道你的文本中最大数的范围,比如1000,文本中的数字不会超过1000的,那么,这个数字你用1000,也是行的,即:

Lookup(1000,……)

行了,再次感谢版主,你说呢?

好,太好了,有这么详细的解释。 我学函数也有信心了。菊花兄还有类似的解释吗? 谢谢。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2006-4-13 13:20 | 显示全部楼层
以下是引用[I]gvntw[/I]在2006-4-12 21:14:27的发言:[BR]

TO konggs:

这个公式不长呀,而且计算速度快。

这个还叫不长? 我晕了。利害。PF

TA的精华主题

TA的得分主题

发表于 2006-4-19 20:14 | 显示全部楼层

关于9E+307

我知道9E+307是一个很大的数,但为什么要用它?为什么哪里都用它?总是不明白。

有朋友这样说。

你认识 Lookup 吗?

我认识 Lookup 是在一家叫良缘的婚姻介绍所。那天我也就为那事去了那家婚姻介绍所,呵,比我早的人还有,于是我就站在老L的身边静静地等着。

老L干咳一声,开始为第一位顾客服务了:你今年多大了?这位先生说话还有点脸红,轻轻说:29。

老L看芳名册了,不,是芳龄册,头也不抬,说:成了,姑娘也是29。

年轻人让开了,后面那位有点经理模样的中年人跨一步上前,刚想问点什么,老L又开腔了:你今年多大了?“经理”只得顺着回答:45。老L说,交钱吧,姑娘36。

老L眼睛往上瞄了瞄,话刚开头:“你今年……”又止住了,怪了,为何不说了?原来那人老L认识,你也认识,是大肚子大耳朵猪八戒,猪八戒像懂规矩似的自己报上了年龄:我今年3680岁,老L恢复了常态,说:如此,给你介绍的姑娘62岁。

这下,我也看出点门道来了:

Lookup(29,{18,18,20,22,25,28,29,30,33,36,46,48,60,62})=29

Lookup(45,{18,18,20,22,25,28,29,30,33,36,46,48,60,62})=36

Lookup(3680,{18,18,20,22,25,28,29,30,33,36,46,48,60,62})=62

Lookup 给你找的人一定不会比你大,同龄或者比你小的人中年龄最接近你的。

Lookup的档案中记载:如果函数 LOOKUP 找不到 lookup_value,则查找 lookup_vector 中小于或等于 lookup_value 的最大数值。

新来的是Match

不知为什么,第二天,Lookup 在良缘婚姻介绍所下岗了,新来的是Match,戴眼睛,说话文绉绉的。

无巧不成书,排在前面的还是那三位,我都认识。

Match 跟Lookup一样,也问,你今年多大了?那位还是回答,29。

Match胸有成竹,说,行,给你介绍7号姑娘。先生满心欢喜离开了。

第二位得到的回答是,行,给你介绍10号姑娘。

轮到猪八戒了,听说猪八戒当书记了,这猪书记早清楚,62岁的是高翠花,60岁的是梦中情人嫦娥,他费尽嘴舌,要Match给他换一个,Match就是不同意,说,这是原则。

打开Match的记录本,你看看:

Match(29,{18,18,20,22,25,28,29,30,33,36,46,48,60,62})=7

Match(45,{18,18,20,22,25,28,29,30,33,36,46,48,60,62})=10

Match(3680,{18,18,20,22,25,28,29,30,33,36,46,48,60,62})=14

9E+307是什么概念?

9E+307是科学记数,用普通记数法写是9后面有307个0,长长的……宋丹丹说了,那是相当的长啊。

如果你到这个年龄,还是到良缘婚姻介绍所找老L和小M,还是那本芳龄册,你说,他们给你介绍谁啊?

想找个18的?没门!

言归正传

你会说,这些我懂,不必费这么大劲,我就是想问个明白,为什么用9E+307?

你再返回上面,看看版主为我们写的公式,反正,在构思解题思路时,就有,把那串文本从第一个数字开始,依次取1位、2位、3位、4位……,总共有多长,最后就取多少位。

有一部分,它的结果不是数(这个处理办法你自己看明白),取出的结果是数值的,一定有一个是最大的,它一定排列在最后面(多举些例子,看看是不是这样),我们要取的就是最后面那个数。

为了娶到最后面那位,你就得把年龄往最大里吹,吹!

多少合适?9E+307。

=LOOKUP(562,{5;56;562;562;562;562;#VALUE!;#VALUE!;#VALUE!})

=LOOKUP(1000,{5;56;562;562;562;562;#VALUE!;#VALUE!;#VALUE!})

=LOOKUP(9E+307,{5;56;562;562;562;562;#VALUE!;#VALUE!;#VALUE!})

前面也一样返回562,为保险起见,我们用9E+307查找,为了返回数组中最大的值。

注:Lookup、Match都还有第三个参数,这个参数可以改变它的查找方式,如果你还不知道,一定要弄个明白,不要把责任推给山菊花,谢了。

评分

3

查看全部评分

TA的精华主题

TA的得分主题

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

以下是引用[I]zw1028[/I]在2006-4-19 20:13:33的发言:[BR]就个人理解“9E+307”肯定不光是一个很大的数字,肯定还有别的我们不知道的意思。不然为什么不写成“9E+309”或不写成“10E+309”等等.....所以特请教山菊花老师:能否解释一下“9E+307”的含义?谢谢!

http://club.excelhome.net/viewthread.php?tid=162881&px=0

TA的精华主题

TA的得分主题

发表于 2006-4-19 21:06 | 显示全部楼层

9E+307是一个很大的数,很接近Excel计算允许的最大值,它好记,可以应付几乎所有的情况,所以,约定俗成而用它。

帮助中说,Variant 类型的数据正数最大值是 1.797693134862315E308,可是1E+308就出错了,不知为什么。

TA的精华主题

TA的得分主题

发表于 2006-4-19 21:44 | 显示全部楼层

山菊花朋友在8楼、14楼的精彩解析,通俗易懂,介绍了每个步骤的运算和验证方法,给大家带来了学习的方便和乐趣。谢谢你。希望以后能经常看到这样的回贴。

TA的精华主题

TA的得分主题

发表于 2006-4-20 14:04 | 显示全部楼层
以下是引用[I]山菊花[/I]在2006-4-19 21:06:33的发言:

9E+307是一个很大的数,很接近Excel计算允许的最大值,它好记,可以应付几乎所有的情况,所以,约定俗成而用它。

帮助中说,Variant 类型的数据正数最大值是 1.797693134862315E308,可是1E+308就出错了,不知为什么。


计算规范
功能           最大限制
数字精度  15 位
单元格中可键入的最大数值 9.99999999999999E307
最大正数  1.79769313486231E308
最小负数  2.2250738585072E-308
最小正数  2.229E-308
最大负数  -2.2250738585073E-308
[此贴子已经被作者于2006-7-30 15:44:59编辑过]

TA的精华主题

TA的得分主题

发表于 2006-4-20 15:22 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-4-20 16:32 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 21:53 , Processed in 0.039943 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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