美文网首页
如何从中文和数字混合的文本中,提取部分数字?

如何从中文和数字混合的文本中,提取部分数字?

作者: 甘彬 | 来源:发表于2019-08-16 10:53 被阅读0次

    昨天在中国移动培训结束后,学员小K咨询到:有什么方法可以从中文和数字混合的文本中,提取部分数字?

    小K的问题是这样的,她想从下图所示的套餐分类的数据中提取金额。

    如果金额的数字长度是一致的,我们可以先用FIND函数查询“元”字的位置,再用MID函数截取我们想要的数字。可问题就在于数字的长度是不一样的,有1位的、2位的、3位的,最多不超过3位的数字。

    当我们在函数运用的过程中卡壳了,觉得写不下去了,不用着急,一步一步来。所以,我还是按照刚刚的思路,用FIND函数查询出“元”字的位置,再用左取字符的LEFT函数取出“元”字左侧的所有字符,公式如下:

    =LEFT(A2,FIND("元",A2)-1)

    接着就要想一想如何从右往左取出长短不一的1-3位的数字。首先我用RIGHT函数从右往左取1-3位的数字,公式如下:

    =RIGHT(B2,ROW($1:$3))

    ROW函数用于返回行号,ROW($1:$3)返回的就是1、2、3三个数字,意味着分别从右往左取1个字符、2个字符、3个字符,以B2单元格的内容为例,就会形成这样的结果:{"8";"58";"惠58"}

    接着在RIGHT函数的结果前面添加负号,公式如下:

    =-RIGHT(B2,ROW($1:$3))

    添加负号的作用是将数值转换为负数,含有文本字符的字符串则变成错误值:{-8;-58;#VALUE!}。

    最后用LOOKUP函数,使用1作为查询值,在由负数、0和错误值构成的数组中,忽略错误值提取最后一个等于或小于1的数值。最后再使用负号,将提取出的负数转为正数。

    =-LOOKUP(1,-RIGHT(B2,ROW($1:$3)))

    到这个步骤,我们就实现了从中文和数字混合的文本中,提取出部分数字。这是函数的运行结果:

    相关文章

      网友评论

          本文标题:如何从中文和数字混合的文本中,提取部分数字?

          本文链接:https://www.haomeiwen.com/subject/tflfsctx.html