Excel怎么识别提取单元格内容中括号内的字符

admin 36 0

在 Excel 中提取单元格括号内字符,可根据括号类型(英文 / 中文)、是否多组括号等场景,用函数公式快速实现,复杂场景还能借助 VBA,具体方法如下:

1、提取单组括号内字符(基础款)

若单元格只有一对英文或中文括号,用MID+FIND组合公式即可,搭配IFERROR还能避免无括号时出现错误值。

■ 英文括号公式:在目标单元格输入

=IFERROR(MID(A1,FIND("(",A1)+1,FIND(")",A1)-FIND("(",A1)-1),"")

■ 中文括号公式:把括号替换为中文格式,公式为

=IFERROR(MID(A1,FIND("(",A1)+1,FIND(")",A1)-FIND("(",A1)-1),"")

公式解析:

FIND

函数定位括号位置,

MID

函数从左括号后一位开始,截取括号间的字符,

IFERROR

则让无括号的单元格显示空值。

2、提取多组括号内字符(Excel 365 专属)

当单元格有多个括号如 “苹果 (红)(500g)”,可通过

TEXTJOIN

+

FILTERXML

组合公式提取所有括号内容并合并。

输入公式

=TEXTJOIN(",",TRUE,FILTERXML("<a><b>"&SUBSTITUTE(SUBSTITUTE(A1,"(","</b><b>"),")","</b><b>")&"</b></a>","//b(position() mod 2 = 0)"))

。

公式解析:先将文本按括号分割为 XML 节点,再提取偶数位置的节点(即括号内内容),最后用

TEXTJOIN

以逗号连接所有结果。

3、提取最后一组括号内字符

若单元格有多组括号但只需最后一组内容,比如 “书籍 (小说)(纸质版)” 要提取 “纸质版”,可用反向定位公式:

=IFERROR(MID(A1,FIND("@",SUBSTITUTE(A1,"(", "@",LEN(A1)-LEN(SUBSTITUTE(A1,"(", ""))))+1,FIND("@",SUBSTITUTE(A1,")","@",LEN(A1)-LEN(SUBSTITUTE(A1,")","")))) - FIND("@",SUBSTITUTE(A1,"(", "@",LEN(A1)-LEN(SUBSTITUTE(A1,"(", "")))) -1),"")

。

公式解析:通过

SUBSTITUTE

将最后一个括号替换为特殊符号

@

,再用

FIND

定位该符号,最后用

MID

截取对应内容。

92262bf907af914b95a0fc33c3f33bf6.jpg

4、VBA 提取(支持嵌套括号)

若存在嵌套括号如 “数据 ((2025) 年度)”,函数公式较难处理,可自定义 VBA 函数。按下

Alt+F11

打开 VBA 编辑器,插入模块后粘贴以下代码:

Function ExtractBrackets(txt As String)

    Dim regex As Object

    Set regex = CreateObject("VBScript.RegExp")

    regex.Pattern = "\((.*?)\)"

    regex.Global = True

    Dim matches As Object

    Set matches = regex.Execute(txt)    

    Dim result As String

    For Each Match In matches

        result = result & Match.SubMatches(0) & ","

    Next

    If result <> "" Then result = Left(result, Len(result) - 1)

    ExtractBrackets = result

End Function


保存后回到 Excel,在单元格输入=ExtractBrackets(A1),即可提取所有括号(含嵌套)内的内容。

  • 评论列表

留言评论