夜雨聆风学习资料网

ARTICLE · 1278600

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

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

只要复制进去,新建的模块里就可以了

然后就是正常公式怎么用,它就怎么用

如果你想打开任何一个工作簿都能用,怎么办?用加载宏功能

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料