ARTICLE · 1278600
Excel教程:提取连续特定规则的字符

群里童鞋经常会问:我要提取一个单元格里连续的特定的数字怎么办?
提取连续的汉字怎么办?提取连续的字母怎么办?提取特定规则连续字符怎么办?
如果我们用传统的公式做法,就一个提取数字就很麻烦了,开头和结尾数字是一个提取办法,中间的又一个办法,连续的一个办法,还得开火车,呜呜呜
能不能就来一个函数,给几个参数搞定这所以要求呢?
大鹅自己写一个函数解决这个问题
简单介绍下这个函数的属性,然后通过几个案例,来介绍下怎么样。
01.属性
strTQ(单元格地址,提取规则,[第几个连续],[正序找还是倒叙找])
四个属性,分别是:
1,单元格地址:选单元格地址就好,只支持1个单元格
2,提取规则:"一-隝"表示全部汉字
"0-9"表示全部数字
"A-Za-z"表示全部字母
可以根据自己要找的内容定制写比如带小数点的数字"0-9.",带括号的数字"(0-9)"
3,[第几个连续]:可选参数,默认是1,可以自己写,表示你要提取第几个连续的
4,[正序找还是倒叙找]:可选参数,默认1表示正序找,0表示倒叙找
看不懂没关系,接着看下面几个案例,就明白了
02.看几个案例,学习下用法
1)提取规格

我要找B列单元格的规格,提取出第一组数组和字母组合的规格

C3单元格写公式:=strTQ(B3,"0-9A-Za-z")
解释下,第二参数:"0-9A-Za-z",表示找连续数字,大字字母和小写字母
三参数忽略默认是第一个,四参数忽略默认是正序查找
就提取出了想要的规格
2)提取数量

这里我多用几个方法
看例子都是第二组连续数字

D3第一个写公式:=strTQ(B3,"0-9",2)
提取第二组连续的数字
但是,如果数据多了,不一定是第二组呢?但是可以确认的是,一定是倒数第一个连续数字表示数量

E3单元格写公式:=strTQ(B3,"0-9",,0)
第三参数,没写,默认找第一组连续数字
第四参数,写0,表示倒叙找
这里的数字是整数,如果小数点怎么写呢?

就是简单把第二参数加了一个小数点 =strTQ(B3,"0-9.",,0)
3)提取单位

观察数据,最后一组汉字就是的单位

G3单元格写公式:=strTQ(B3,"一-隝",,0)
第二参数改为了:"一-隝"
三参数,省略默认第一组数据
四参数0表示倒叙查找
03.这么秀,这个东西怎么用呢?
我录制一个动态图,你照着做就可以了
复制代码:
'1参数:单元格地址,2参数:规则,3参数:默认提取第一个连续(第几个连续) '4参数:默认是1表示正序提取,0表示倒叙提取 '默认最多提取256组连续数据 Function strTQ(rng As Range, _ strGuize As String, _ Optional n As Long = 1, _ Optional daoxu As Long = 1) Dim num&, i&, arr(255) As String, k&, strTemp$ num = Len(rng.Value) If daoxu = 1 Then '正序走 For i = 1 To num If Mid(rng.Value, i, 1) Like "[" & strGuize & "]" Then strTemp = strTemp & Mid(rng.Value, i, 1) Else If strTemp <> "" Then arr(k) = strTemp If arr(k) <> "" Then k = k + 1 strTemp = "" End If If i = num And strTemp <> "" Then arr(k) = strTemp Next ElseIf daoxu = 0 Then '倒叙走 For i = num To 1 Step -1 If Mid(rng.Value, i, 1) Like "[" & strGuize & "]" Then strTemp = Mid(rng.Value, i, 1) & strTemp Else If strTemp <> "" Then arr(k) = strTemp If arr(k) <> "" Then k = k + 1 strTemp = "" End If If i = num And strTemp <> "" Then arr(k) = strTemp Next End If If arr(0) = "" Then strTQ = "#N/A" '一个都没找到 Else strTQ = arr(n - 1) End If End Function |

只要复制进去,新建的模块里就可以了
然后就是正常公式怎么用,它就怎么用
如果你想打开任何一个工作簿都能用,怎么办?用加载宏功能















































































