不啰嗦,直奔主题……
看看如何提取,一般使用函数提取,难度较大
先看一下数据源:
分别提取数字、字母和汉字
方案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([文本],{"一".."龟"})])
今天就到这里,简洁一些!