在Excel中取出数字,最快捷的方法是使用快速填充(Ctrl+E),而最通用的方法是利用MID、LEFT、RIGHT与数组组合的公式,后者能处理任意结构的混合文本。 无论你是财务人员还是数据分析师,在整理脏数据时都可能遇到“ABC123”“价格50元”这类单元格,需要单独提取数字部分,本文结合Excel多个版本特性,给出从入门到进阶的完整方案。
excel取出数字的公式方法
公式法适合数据量较大且需要动态更新的场景,不同版本的Excel提供不同函数工具,但核心逻辑一致:识别数字字符并截取。
excel提取数字函数:MID与ROW数组组合
这是Excel 2016及以下版本最通用的公式,利用数组运算将文本拆解为单个字符,再判断是否为数字。
- 基础公式:
=MID(A1,MATCH(TRUE,ISNUMBER(--MID(A1,ROW($1:$100),1)),0),COUNT(1ISNUMBER(--MID(A1,ROW($1:$100),1)))) - 输入后按Ctrl+Shift+Enter结束(数组公式)。
- 原理:
ROW($1:$100)生成1到100的序列,配合MID逐一提取字符;将字符转为数值,非数字返回错误;ISNUMBER判断是否为数字;MATCH定位第一个数字位置;COUNT计算数字个数,最后MID截取连续数字。
缺点:公式冗长,仅提取连续数字,若数字被文本隔开(如“123A456”)只能提取第一段。
改进方案(Excel 2019+):使用TEXTJOIN过滤非数字字符。
=VALUE(TEXTJOIN(“”,TRUE,IF(ISNUMBER(--MID(A1,ROW($1:$100),1)),MID(A1,ROW($1:$100),1),“”)))- 此公式将每个数字字符拼合,再转为数值,可提取所有数字(包括不连续),同样需按Ctrl+Shift+Enter。
新版本专属:LET与LAMBDA简化
Excel 365用户可借助LET函数定义变量,让公式更易读。
=LET(t,MID(A1,ROW($1:$100),1),n,ISNUMBER(--t),VALUE(TEXTJOIN(“”,TRUE,IF(n,t,“”))))- 无需Ctrl+Shift+Enter,直接回车。效率提升,且便于嵌套。
针对特定格式:LEFT、RIGHT与VALUE
如果数字固定在文本左侧或右侧,可用简单函数。
- 数字在左侧:
=VALUE(LEFT(A1,FIND(“-”,A1)-1))或=LEFT(A1,COUNT(1ISNUMBER(--LEFT(A1,ROW($1:$100)))))。 - 数字在右侧:
=RIGHT(A1,COUNT(1ISNUMBER(--RIGHT(A1,ROW($1:$100))))),再通过VALUE转为数值。
适用场景:产品编号如“ABC123”或“123ABC”,结构固定时性价比最高。
excel混合文本提取数字:快速填充实战
快速填充(Flash Fill)是Excel 2013版本引入的智能工具,它能识别用户输入的模式,自动完成剩余单元格的提取,完全不需要公式。
-
操作步骤:
- 在待提取列右侧新建一列;
- 手动输入第一个单元格中你想提取的数字部分(例如原数据“华为P50”,输入“50”);
- 选中该单元格,按
Ctrl+E(或点击“数据”选项卡→“快速填充”); - Excel会自动模仿你的模式,填充下方所有单元格的数字。
-
注意事项:
- 快速填充要求模式清晰,如果数据格式差异大(如“华为P50”和“小米10 Ultra”),可能识别错误,需手动修正样例。
- 它不会自动更新,当源数据变动时需重新填充。行业共识认为,快速填充适合一次性清洗,不适合需要反复刷新的报表。
实际案例:某电商运营专员需要从商品标题“2026新款春季连衣裙XXXL”中提取尺码“XXXL”,但数字提取时只需保留数字“2026”,快速填充在10秒内完成300行数据,而写公式需要至少5分钟测试。据微软官方文档,快速填充基于机器学习,版本越新识别越准。
excel取出数字的进阶方案:Power Query和VBA
当数据量超过10万行,或需要反复执行相同提取逻辑,公式和快速填充都会显得乏力,此时Power Query和VBA是更可靠的选择。
Power Query:用Text.Select提取数字
Power Query是Excel 2016及以后版本内置的数据清洗工具,它通过可视化界面和M语言实现复杂转换,且不破坏原始数据。
-
步骤:
- 选中数据区域,点击“数据”选项卡→“从表格/区域”,进入Power Query编辑器;
- 选中需要提取数字的列,点击“添加列”选项卡→“自定义列”;
- 在公式框中输入:
=Text.Select([列名],{“0”..“9”}); - 确定后得到新列,包含原列中的所有数字字符(连续或不连续);
- 若需转为数值,再点击“转换”选项卡→“数据类型”→“整数”;
- 最后点击“关闭并上载”将结果存放回Excel工作表。
-
优势:操作可重复,每次刷新查询即可更新结果;支持分步撤销,容错率高。业内专家指出,Power Query在处理混合文本时,比公式更直观,尤其适合数字与字母交替出现的数据。
VBA自定义函数:灵活取出数字
VBA可以创建专属于你工作簿的自定义函数,像普通函数一样在单元格中使用,且无需每次手动调整。
- 插入代码:
- 按
Alt+F11打开VBA编辑器; - 插入“模块”;
- 粘贴以下代码:
Function GetNumbers(rng As Range) As String Dim i As Integer Dim result As String For i = 1 To Len(rng.Value) If Mid(rng.Value, i, 1) Like “[0-9]” Then result = result & Mid(rng.Value, i, 1) End If Next i GetNumbers = result End Function - 关闭编辑器,在工作表中输入
=GetNumbers(A1)即可提取数字。
- 按
- 扩展:若需返回数值,将函数返回值类型改为
Double,并在最后加上Val(result)。
优缺点:
- VBA函数可保存为加载宏,供所有文件使用;
- 但需要启用宏,且部分企业环境禁用宏。
如何选择合适的方法
| 场景 | 推荐方法 | 理由 |
|---|---|---|
| 一次性的简单提取,数据量<1000行 | 快速填充 | 零成本,速度快 |
| 需要公式联动,数据量适中 | MID+ROW数组或TEXTJOIN | 结果自动更新 |
| 数据量>10000行,格式复杂 | Power Query | 稳定,不卡顿 |
| 需要反复使用,且环境支持宏 | VBA自定义函数 | 一劳永逸 |
最后结论:从Excel单元格中取出数字并非难事,关键在于根据数据结构和更新频率选择工具,快速填充解决90%的日常需求,公式搞定剩余9%,而Power Query和VBA覆盖那1%极端场景,掌握这几种方法,你就能应对任何包含数字的文本提取任务。
excel取出数字常见问题解答
问:excel取出数字公式为什么返回错误值?
答:最常见原因是公式中未使用数组运算(未按Ctrl+Shift+Enter),或者文本中不含数字,若数字被文本分隔,简单MID公式只能提取连续段,非连续数字会报错,建议改用TEXTJOIN方法或Power Query的Text.Select。
问:excel混合文本提取数字后,如何快速转换为数值格式?
答:公式结果默认是文本,若要计算需乘以1或使用VALUE函数,例如=VALUE(提取公式),在Power Query中,直接设置数据类型为“整数”或“小数”即可,使用快速填充时,Excel会自动识别为数值。
问:excel取出数字快捷键是什么?
答:快捷键是Ctrl+E,用于快速填充,但注意,它并非专为提取数字设计,而是根据模式智能填充,你可以在第一行手动输入期望的数字,然后按下该快捷键,Excel会猜测并完成剩余单元格的提取,对于复杂模式,可能需多次修正样例。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/503453.html



