打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
文本中提取数字 原来不用VBA也可以!

其实我不太理解为什么会有那么多汉字和数字混合存在,而后又要想方设法把其中的数字提取出来。录入数据的时候不能分开吗?

当然,这个世界不能理解的事情太多了,毕竟个人是那么的渺小,见识是那么的浅薄。

无论如何,提取数字这个话题还是值得研究研究。

结构明确

这是最简单的情况,字符串中数字的位置和长度都固定且已知,用字符提取函数直接提取即可:

=RIGHT(B3,3)

提取最右边的3个字符。

=MID(B4,6,4)

提取第6个开始的连续4个字符。

=LEFT(B5,2)

提取最左边的2个字符。

固定位置不固定长度

提取数字无外乎解决两个核心问题:

位置,从哪里提取;

长度,提取几个字符。

固定位置的情况下,在左边用LEFT,在右边用RIGHT,在中间用MID

长度则需要设法计算,LEN和LENB是常用方法。

LEN:返回字符串长度,无论中英文还是数字,一个字符返回1;

例如公式“=LEN(你好888)“的结果是5。

LENB:返回字节数,1个汉字是2个字节,返回2;1个字母和数字是1个字节,返回1.

例如公式“=LENB(你好888)“的结果是7。

以上两个结果的差值,就是字符串中汉字的个数。

下图所示案例中,通过这样的差值计算就可以确定数字的长度:

=RIGHT(B3,2*LEN(B3)-LENB(B3))

位置长度都不固定

=MAX(IFERROR(--MID(B3,ROW($1:$99),COLUMN($A:$CU)),""))

MID将字符串拆分得到一个二维数组;

--MID的作用是将该数组中的所有数据转为数字,非数字部分将返回错误值;

IFERROR将错误值转为空值;

整个二维数组中只剩下纯数字和空值两种类型;

MAX求最大值即可。

这个公式还有两个要点:

仅针对含1个数字的字符串有效;

按字符数最大99设计,如大于99,需修改ROW和COLUMN的参数,或改用以下公式:

=MAX(IFERROR(--MID(B3,ROW(OFFSET($A$1,,,LEN(B3))),COLUMN(OFFSET($A$1,,,,LEN(B3)))),""))

固定分割符

数字的前后有固定分隔符的情况,在M365版本中用TEXTBEFORE,TEXTAFTER,TEXTSPLIT这三个函数可以轻松解决。

如下图所示案例,提取括号中的数字:

=TEXTBEFORE(TEXTAFTER(B3,"("),")")

其他版本中的思路是用FIND查找分隔符的位置和长度,MID提取。

=MID(B3,FIND("(",B3)+1,SUM(FIND({"(",")"},B3)*{-1,1})-1)

多数字夹杂

=SUBSTITUTE(CONCAT(MIDB(B3,ROW($1:$99),1))," ","")

借助MIDB按字节拆分的特性,一个汉字将被拆分为两个空格;

拆分后用CONCAT重新组合的新字符串中,只有数字和空格两种类型;

SUBSTITUTE将其中的空格全部替换为空即可。

当然最复杂的情况下 只有VBA或者JSA的正则表达式才能完全应对!

Excel高级技巧批量删除计算式内中文字符 VBA正则表达式
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel文本提取江湖四剑客,你可知否?
文本函数len和lenb的用法
如何把数字提取出来
【肥苏函数】提取字符专题(MID、MIDB)
Excel混合文本中提取数字,90%小伙伴面临的困扰!
16个Excel文本函数,这篇文章教你全弄清楚!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服