这里用到了由VBA写的一个自定义函数 TiQu(S),参数 S 可以是单元格也可以是字符串,它的返回值有3个,在单元格中输入时可以用 INDEX() 函数来引用它的3个结果。
使用方法:
如题中图片所示,在B2中输入下面公式,然后右拉。
=INDEX(TiQu($A2),COLUMN(A1))
自定义函数需要存入EXCEL模块中,具体做法为:
右键单击工作表标签,选择“查看代码”,点击后弹出VBE编辑器,点击“插入”——“模块”,在右边空白窗口粘贴下面代码,另存为 Excel 97-2003 *.xls 格式文件,这样就可以在单元格使用上面函数了。
注:
TiQu是自己定义的名称,意思是“提取”,可以自己修改喜欢的字符
如果只取数字可以输入 =INDEX(TiQu($A2),1),只取符号输入 =INDEX(TiQu($A2),2),同理,只取字母输入 =INDEX(TiQu($A2),3)。
Function TiQu(S) '提取数字, 符号, 字母
Dim Sz$, Fh$, Zm$
Dim Reg, Matchs
Set Reg = CreateObject("VBScript.RegExp")
'数字
With Reg
.Global = True
.Pattern = "\d+"
End With
Set Matchs = Reg.Execute(S)
For Each Match In Matchs
Sz = Sz & Match
Next
'字母
With Reg
.Global = True
.Pattern = "[a-z|A-Z]"
End With
Set Matchs = Reg.Execute(S)
For Each Match In Matchs
Zm = Zm & Match
Next
'字符
With Reg
.Global = True
.Pattern = "[^a-z|A-Z|\d+]"
End With
Set Matchs = Reg.Execute(S)
For Each Match In Matchs
Fh = Fh & Match
Next
TiQu = Array(Sz, Fh, Zm)
End Function
大佬,如果全是不规律字符串带符号,我要提取中间某三段段要怎么实现啊?
可以先分列再用函数