Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1595|回复: 4

[已解决]关于单元格中提取数字的疑问

[复制链接]
发表于 2021-10-22 15:37 | 显示全部楼层 |阅读模式

求教大神
昨天看到一个帖子,是说如何巧用lookup提取单元格中的数字的

比如A2单元格内容是:鸡蛋22.5斤
A3中的公式则应该用=-LOOKUP(,-MIDB(A2,SEARCHB("?",A2),ROW($1:$15)))

这里我不太明白的是,为什么要用lookup加上两次负数去这样求,既然是对取出来的数据组进行排序后查找,为什么不能用large或者max
因为我测试过,large和max都可以无视文本直接对数字进行排序的

比如我理解的,可以实现的公式应该为:=MAX(MIDB(A2,SEARCHB("?",A2),ROW($1:$15)))
可是我填入了函数后,返回的一直是2

想了半天实在理解不了,求大神不吝赐教

最佳答案
2021-10-22 15:53
本帖最后由 cutecpu 于 2021-10-22 16:07 编辑

您的 =MAX(MIDB(A2,SEARCHB("?",A2),ROW($1:$15)))
換成 =AGGREGATE(14,6,1*MIDB(A2,SEARCHB("?",A2),ROW(1:15)),1)

因为经过 MIDB(A2,SEARCHB("?",A2),ROW($1:$15)) 处理后都是文本
所以您前面套个 1* 变成数字后,再取最大
但转数字的过程中可能失败,所以用 AGGREGATE(14,6, 数组, 1 ) 的方式避开错误值(14=large, 6=忽略错误值)


祝順心,南無阿彌陀佛!



excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2021-10-22 15:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 cutecpu 于 2021-10-22 16:07 编辑

您的 =MAX(MIDB(A2,SEARCHB("?",A2),ROW($1:$15)))
換成 =AGGREGATE(14,6,1*MIDB(A2,SEARCHB("?",A2),ROW(1:15)),1)

因为经过 MIDB(A2,SEARCHB("?",A2),ROW($1:$15)) 处理后都是文本
所以您前面套个 1* 变成数字后,再取最大
但转数字的过程中可能失败,所以用 AGGREGATE(14,6, 数组, 1 ) 的方式避开错误值(14=large, 6=忽略错误值)


祝順心,南無阿彌陀佛!



回复

使用道具 举报

 楼主| 发表于 2021-10-22 16:16 | 显示全部楼层
本帖最后由 songxueyi1 于 2021-10-22 16:28 编辑
cutecpu 发表于 2021-10-22 15:53
您的 =MAX(MIDB(A2,SEARCHB("?",A2),ROW($1:$15)))
換成 =AGGREGATE(14,6,1*MIDB(A2,SEARCHB("?",A2),ROW( ...

那为啥lookup公式里,mid前面加上负号就可以正常使用,max却不行


哦我刚试了下,lookup可以无视#VALUE!,max不行。。max只能无视文本,做不到无视错误值

所以是,1:mid取出来是文本,不能进行排序操作,除非公式前加“-”
             2:加“-”后,数组中会出现错误值,而max不能无视错误值
             3:所以只能用lookup或者aggregate这种可以无视错误值的函数


学的越多,才发现自己懂的越少。。。
回复

使用道具 举报

发表于 2021-10-22 17:13 | 显示全部楼层
songxueyi1 发表于 2021-10-22 16:16
那为啥lookup公式里,mid前面加上负号就可以正常使用,max却不行

下面等价:
1. -LOOKUP(0,-MIDB(A2,SEARCHB("?",A2),ROW($1:$15)))   
2. LOOKUP(9^9,1*MIDB(A2,SEARCHB("?",A2),ROW($1:$15)))

公式 1: 利用 0 大于所有负值的特性,配合 lookup 会取到最后一个有效的负数,然后再负负得正
公式 2: 利用一个极大值(例9^9) 大于所有值的特性,配合 lookup 取最后一个有效数字






回复

使用道具 举报

 楼主| 发表于 2021-10-22 17:15 | 显示全部楼层
cutecpu 发表于 2021-10-22 17:13
下面等价:
1. -LOOKUP(0,-MIDB(A2,SEARCHB("?",A2),ROW($1:$15)))   
2. LOOKUP(9^9,1*MIDB(A2,SEARCH ...

嗯嗯非常谢谢大神,这个公式我已经学会并理解了,非常感谢您的答疑

评分

参与人数 1学分 +2 收起 理由
cutecpu + 2 不客气。祝顺心,南无阿弥陀佛!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-10 12:38 , Processed in 0.240786 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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