如何在Excel中提取首个连续9位字母数字字符?
提取字符串中首个连续9位字母数字字符的解决方案
非数组公式方案(兼容多数Excel版本)
如果你不想用VBA,可尝试以下非数组公式(无需按Ctrl+Shift+Enter输入):
=MID(A1,AGGREGATE(15,6,SEARCH(REPT("[0-9A-Za-z]",9),A1,ROW($1:$LEN(A1))),1),9)
这个公式通过AGGREGATE函数筛选出首个匹配连续9位字母数字的位置,再用MID截取内容,避免了数组公式的复杂操作,也不依赖固定分隔符。
VBA自定义函数方案(更精准稳定)
由于分隔符不固定,用正则表达式匹配是最可靠的方式,以下是自定义函数实现步骤:
- 按
Alt+F11打开VBA编辑器 - 插入新模块:右键左侧工程资源管理器 → 插入 → 模块
- 粘贴以下代码:
Function Get9CharAlphaNum(inputText As String) As String Dim regex As Object Set regex = CreateObject("VBScript.RegExp") With regex .Pattern = "[0-9A-Za-z]{9}" ' 匹配连续9位字母数字 .Global = False ' 仅返回第一个匹配项 End With If regex.Test(inputText) Then Get9CharAlphaNum = regex.Execute(inputText)(0).Value Else Get9CharAlphaNum = "" ' 无匹配时返回空字符串 End If Set regex = Nothing End Function
- 返回Excel,在目标单元格输入
=Get9CharAlphaNum(A1)即可提取结果。
补充说明
- 若需要确保提取的是独立的字符组(不与其他字母数字连在一起),可将正则模式改为
"\b[0-9A-Za-z]{9}\b",其中\b代表单词边界。 - 如需忽略大小写,在
With regex代码块中添加.IgnoreCase = True即可。
内容的提问来源于stack exchange,提问作者NeverSurrender2024
相关产品推荐
相关产品推荐

