正则截取数字_提取数字、字母、汉字如此简单

不啰嗦,直奔主题…… 看看如何提取,一般使用函数提取,难度较大

先看一下数据源:

86335607e28a0f19bf632837e86d8c23.png

分别提取数字、字母和汉字

方案1:传统函数公式法

传统的函数方式难度较大,这里只演示一下提取数字,其他不再演示

通用数字提取公式:

=MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17)),COUNT(--MID(A2,ROW($1:$99),1))+ISNUMBER(FIND(".",A2)))

简单解析一下:

1、MIN(FIND(ROW($1:$10)-1,A2&1/17)):获取数字首次出现的位置

2、COUNT(--MID(A2,ROW($1:$99),1))+ISNUMBER(FIND(".",A2))

数字+点 数量合计,其实也就是需要截取的长度

463663633d357b88c1bcf1863aa951e8.png

方案2:自定义函数-正则表达式

套模板真香!

ad9f5bb0275dfe5e7c79c00d6c0286d5.png

自定义函数如下:

Function TQ(rng, types As String) As String    Dim obj As Object    Set obj = CreateObject("VBSCRIPT.REGEXP")    With obj        .Global = True        Select Case types        Case Is = "-hz"   '去汉字            .Pattern = "[一-﨩]"        Case Is = "-zm"   '去字母            .Pattern = "[a-zA-Z]"        Case Is = "-sz"   '去数字            .Pattern = "[0-9\.]"        Case Is = "+hz"    '取汉字            .Pattern = "[^一-﨩]"        Case Is = "+zm"   '取字母            .Pattern = "[^a-zA-Z]"        Case Is = "+sz"     '取数字            .Pattern = "[^0-9\.]"        End Select        TQ = .Replace(rng, "")    End WithEnd Function

方案3:Power Query

新工具,应付这种问题,简单小儿科

版本:2016,2010和2013的同学自己安装

数字:Text.Select([文本],{"0".."9","."})

字母:Text.Select([文本],{"A".."z"})

汉字:Text.Select([文本],{"一".."龟"})])

f6abcb6eaa70473e48110b9d2273e012.png

今天就到这里,简洁一些!

74f63258ed42dcbeb75b4c0c13cdb829.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值