Excel精英培训网

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

[已解决]数字提取

[复制链接]
发表于 2022-3-27 09:33 | 显示全部楼层 |阅读模式
请问如何提取不规则的数字,用公式来完成。数字出现在 前 中 后。
最佳答案
2022-3-27 10:38
就附件而言
=MIDB(LEFT(F4,MATCH(99,MID(F4,ROW($1:$15),1)+1)),SEARCHB("?",F4),99)

数字提取.zip

7.04 KB, 下载次数: 19

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2022-3-27 10:26 | 显示全部楼层
{=MID(LOOKUP(1,0/MID(F4,ROW($1:$98),1)/ISERR(-MID(F4,ROW($2:$99),1)),LEFT(F4,ROW($1:$98))),MIN(IFERROR(FIND(ROW($1:$9),F4&1/17),99)),99)
回复

使用道具 举报

发表于 2022-3-27 10:38 | 显示全部楼层    本楼为最佳答案   
就附件而言
=MIDB(LEFT(F4,MATCH(99,MID(F4,ROW($1:$15),1)+1)),SEARCHB("?",F4),99)

点评

老师,牛  发表于 2022-3-28 14:23
回复

使用道具 举报

发表于 2022-3-27 10:59 | 显示全部楼层
=MID(F4,99-LOOKUP(9,-MID(F4,99-ROW($1:$99),1),ROW($1:$99)),LOOKUP(9,-MID(F4,ROW($1:$99),1),ROW($1:$99))+1 -99+LOOKUP(9,-MID(F4,99-ROW($1:$99),1),ROW($1:$99)))
===========================
2楼 公式更短 , 是数组公式 , "{" 不要 敲上 , 公式输入完 ,
按 Ctrl + Shift + Enter 三键完成

3楼 公式 适用目前附件 ,
但 提取部分 之前 不能有 半角字符
如: 丁y晴胶10*1.5O型圈

======================================
这样的数据 , 通常应该很多 , 感觉公式太多总是要卡的


回复

使用道具 举报

发表于 2022-3-28 09:41 | 显示全部楼层
=MID(F4,SMALL(IFERROR((--MID(F4,ROW($1:$99),1))^0*ROW($1:$99),""),1),LARGE(IFERROR((--MID(F4,ROW($1:$99),1))^0*ROW($1:$99),""),1)-SMALL(IFERROR((--MID(F4,ROW($1:$99),1))^0*ROW($1:$99),""),1)+1)

祝顺心!
回复

使用道具 举报

发表于 2022-3-29 15:02 | 显示全部楼层

复制代码
  1. Function 提取数字(rng As Range)
  2. Dim REG As Object
  3. Set REG = CreateObject("VBSCRIPT.REGEXP")
  4. Dim m, mat, sr
  5. With REG
  6.     .Global = True
  7.     .Pattern = "\d+\.*?\d+|\d+"
  8.     Set mat = .Execute(rng.Value)
  9.     For Each m In mat
  10.         sr = sr & "*" & m
  11.     Next m
  12.     sr = Mid(sr, 2, Len(sr))
  13.     提取数字 = sr
  14. End With
  15. End Function
复制代码


如果你会用vba的话,我这里帮你新建了一个函数公式,直接用就可以。

1648537323(1).jpg

数字提取.rar

14.66 KB, 下载次数: 1

回复

使用道具 举报

发表于 2022-3-29 16:01 | 显示全部楼层
G4单元格
最后一个数字
=MATCH(99,MID(F4,ROW($1:$15),1)+0)   输出9第一个数字
=MATCH(0,0/(MID(F4,ROW($1:$15),1)+0>0),0) 输出4
整合以后
MID(F4,4,9-4+1)
常量用变量函数代替为
=MID(F4,MATCH(0,0/(MID(F4,ROW($1:$15),1)+0>0),0),MATCH(99,MID(F4,ROW($1:$15),1)+0)-MATCH(0,0/(MID(F4,ROW($1:$15),1)+0>0),0)+1)
以上都是数组原理,所以都需要三键才能显示正确的结果:Ctrl+Shift+Enter

数字提取.rar

14.08 KB, 下载次数: 1

回复

使用道具 举报

发表于 2022-3-29 16:03 | 显示全部楼层
砂海 发表于 2022-3-27 10:59
=MID(F4,99-LOOKUP(9,-MID(F4,99-ROW($1:$99),1),ROW($1:$99)),LOOKUP(9,-MID(F4,ROW($1:$99),1),ROW($1:$9 ...

非常赞同,也学习到了。我觉得楼主的问题还是太片面了。不过用vba就没有这种问题,硬是要公式的话,不同情况公式就不一样,并且情况越复杂,函数公式也就越复杂
回复

使用道具 举报

 楼主| 发表于 2022-3-29 16:21 | 显示全部楼层
林木水 发表于 2022-3-29 15:02
如果你会用vba的话,我这里帮你新建了一个函数公式,直接用就可以。

非常感谢你的回复,VBA对于我们这种小白真的是太遥远了,公式虽然不会写,但是百度一下函数的意思,大致去了解一下就可以理解了。在这里也非常感谢大神可以用VBA告诉我,感谢,可惜不能用2个最佳答案 。
回复

使用道具 举报

发表于 2022-3-29 16:39 | 显示全部楼层
hong471 发表于 2022-3-29 16:21
非常感谢你的回复,VBA对于我们这种小白真的是太遥远了,公式虽然不会写,但是百度一下函数的意思,大致 ...

客气了,最佳不最佳的无所谓,大家相互学习,相互进步就行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 02:22 , Processed in 0.364833 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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