EXCEL中提取问题? 5

字符串位置长度不规律,字母大小写不规律,没有关键字,求怎么实现!!求大佬帮助... 字符串位置长度不规律,字母大小写不规律,没有关键字,求怎么实现!!求大佬帮助 展开
 我来答
保利江山
2021-07-22 · TA获得超过2242个赞
知道小有建树答主
回答量:1040
采纳率:60%
帮助的人:502万
展开全部

这里用到了由VBA写的一个自定义函数 TiQu(S),参数 S 可以是单元格也可以是字符串,它的返回值有3个,在单元格中输入时可以用 INDEX() 函数来引用它的3个结果。


使用方法:

如题中图片所示,在B2中输入下面公式,然后右拉。

  • =INDEX(TiQu($A2),COLUMN(A1))


自定义函数需要存入EXCEL模块中,具体做法为:

右键单击工作表标签,选择“查看代码”,点击后弹出VBE编辑器,点击“插入”——“模块”,在右边空白窗口粘贴下面代码,另存为 Excel 97-2003 *.xls 格式文件,这样就可以在单元格使用上面函数了。


注:

  1. TiQu是自己定义的名称,意思是“提取”,可以自己修改喜欢的字符

  2. 如果只取数字可以输入 =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

追问
大佬,如果全是不规律字符串带符号,我要提取中间某三段段要怎么实现啊?
追答
可以先分列再用函数
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式