如何在Excel中删除行内文本与数字 仅保留括号内的数值
Excel仅保留括号内数字的解决方案
核心处理逻辑是直接定向提取所有括号内的数字片段,跳过括号外所有内容(含文字、零散数字、符号),从根源上避免分列时出现多余列、顺序错乱的问题,提供两种可直接落地的方案:
方案1:原生公式方案(无需开启宏)
适用于Excel 2016及以上版本,假设原始数据存放在A列,从A2单元格开始,在相邻空白单元格输入以下公式:=TEXTJOIN(" ",TRUE,IFERROR(--MID(A2,FIND("(",A2,ROW($1:$99))+1,FIND(")",A2,FIND("(",A2,ROW($1:$99)))-FIND("(",A2,ROW($1:$99))-1),""))
- Excel 365/2021版本直接按回车即可生效,下拉填充整列
- 2019及更早版本输入完公式后,按
Ctrl+Shift+Enter三键结束数组公式
公式会自动按顺序遍历单元格内所有成对括号,截取括号内的数字,最终用空格拼接成规整字符串,直接对结果列做分列操作即可,不会出现多余内容。
方案2:VBA自定义函数方案(适合大数据量场景)
如果单表数据超过万行,公式计算卡顿可以用这个方案,步骤如下:
- 按快捷键
Alt+F11调出VBA编辑器 - 在左侧工程栏右键点击当前工作簿名称,依次选择「插入」-「模块」
- 将下方代码粘贴到弹出的模块代码窗口中:
Function GetBracketNum(rng As Range) As String Dim regEx As Object, matches As Object, i As Integer Set regEx = CreateObject("VBScript.RegExp") With regEx .Global = True .Pattern = "\((\d+)\)" Set matches = .Execute(rng.Value) For i = 0 To matches.Count - 1 GetBracketNum = GetBracketNum & " " & matches(i).submatches(0) Next GetBracketNum = Trim(GetBracketNum) End With End Function
- 回到Excel工作表界面,在空白单元格输入
=GetBracketNum(A2),下拉填充即可得到和公式方案一致的规整结果。
注意:如果你的数据里用的是中文全角括号(),只需要把VBA代码里的Pattern参数改为
"\((\d+)\)",同时把公式里FIND函数查找的半角(、)替换为全角括号即可正常匹配。
内容的提问来源于stack exchange,提问作者Alice
相关产品推荐
相关产品推荐

