提取数字、字母、汉字如此简单
先看一下数据源:
分别提取数字、字母和汉字
方案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))
数字+点 数量合计,其实也就是需要截取的长度
方案2:自定义函数-正则表达式
套模板真香!
自定义函数如下:
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 With
End Function
方案3:Power Query
新工具,应付这种问题,简单小儿科
版本:2016,2010和2013的同学自己安装
数字:Text.Select([文本],{"0".."9","."})
字母:Text.Select([文本],{"A".."z"})
汉字:Text.Select([文本],{"一".."龟"})])
今天就到这里,简洁一些!
赞 (0)