提取数字、字母、汉字如此简单

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

先看一下数据源:

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

方案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 WithEnd Function

方案3:Power Query

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

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

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

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

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

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

(0)

相关推荐