一串文本里面提取固定的数字的问题

刚看到了这么一个问题 2023-07-28金属制品23312000000047220439#362.45 这个字符串里面提取出 23312000000047220439 这一段编码,试着写了一下。 ————————————————————————————————————————————————————————— 第一步:把中文和数字格式化 =CONCAT((UNICODE(MID(A1,SEQUENCE(LEN(A1)),1))>19968)*1) 结果为:00000000001111000000000000000000000000000 第二步:获取中文的长度 =LEN(SUBSTITUTE(B1,0,"")) 结果为:4 第三步:找到中文的结尾字符串长度 =FIND(1,B1)+B2 结果为:15 第四步:找到#的位置 =FIND("#",A1) 结果为:35 第五步:获取需要的字段 =MID(A1,B3,B4-B3) 结果为:23312000000047220439 ————————————————————————————————————————————————————————— 把所有公式汇总后,就是这一大串: =MID(A1,FIND(1,CONCAT((UNICODE(MID(A1,SEQUENCE(LEN(A1)),1))>19968)*1))+LEN(SUBSTITUTE(CONCAT((UNICODE(MID(A1,SEQUENCE(LEN(A1)),1))>19968)*1),0,"")),FIND("#",A1)-(FIND(1,CONCAT((UNICODE(MID(A1,SEQUENCE(LEN(A1)),1))>19968)*1))+LEN(SUBSTITUTE(CONCAT((UNICODE(MID(A1,SEQUENCE(LEN(A1)),1))>19968)*1),0,"")))) ————————————————————————————————————————————————————————— 写完发现可以用是可以用,但是有bug,就是如果中文里面出现了一这样的字符,第一小步会被判断为0为不是1 比如:2023-07-28这是一串中文23312000000047220439#362.45 里面的中文会被判断为:110111 这样的话结果就是:文23312000000047220439 ————————————————————————————————————————————————————————— 在EXCEL中用lambad函数应该能搞定,期待一个WPS函数解决这个问题的新思路和新公式。 感觉有一个简单的方法,头秃了暂时想不出来 orz..
江西省
浏览 1173
收藏
4
分享
4 +1
12
+1
全部评论 12
 
会飞的鱼
会飞的鱼

KVP函数专家、创作者俱乐部成员

=SORTBY(TEXTSPLIT(A1,TEXTSPLIT(A1,SEQUENCE(10,,0),,1)),LEN(TEXTSPLIT(A1,TEXTSPLIT(A1,SEQUENCE(10,,0),,1))),-1) 公式是取连续最长的数字,用textsplit对数字拆分后,根据拆分后字符长度使用sortby排序
· 辽宁省
回复
星辰
妙啊,针对这个案例是可以这么玩
· 江西省
回复
 
懒人办公
懒人办公

创作者俱乐部成员

用正则表达式嘛
· 贵州省
回复
星辰
正则咋写,求一个,我有一个正则的自定义函数去试试
· 江西省
回复
 
张俊
张俊

WPS函数专家

您好,根据您的需求,可以直接使用智能填充Ctrl+E的智能填充即可完成;如果确实想使用函数公式也是可以完成的,具体公式如下:=RIGHT(TEXTBEFORE(A1,"#"),COUNT(0/RIGHT(TEXTBEFORE(A1,"#"),SEQUENCE(99)))),由于WPS表格的支持TEXTBEFORE的版本暂不支持动态数组,记得按三键(Ctrl+Shift+Enter)结束即可。 期待能通过我的回答帮助您解答您的问题。
· 上海
回复
星辰
好家伙,直接上chatgpt是吧
· 江西省
1
回复