在 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
截取对应内容。

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),即可提取所有括号(含嵌套)内的内容。
评论列表