如何使用Excel函数提取列中夹杂在其他值之间的8位数字
Excel混合内容列提取固定8位数字方案
假设原始数据存放在A列,首个数据行是A2,提取结果输出到相邻B列对应行,以下是不同Excel版本的可用公式,直接套用即可:
方案1:Excel 365/2021及以上版本(最简方案)
直接用正则提取函数匹配连续8位数字,逻辑最稳定,不会受日期分隔符、其他混杂文字影响:
=REGEXEXTRACT(A2,"\d{8}")
说明:该公式会自动定位单元格内第一组连续无间隔的8位数字直接返回,日期内容中的数字会被-///年月日等分隔符拆分,不会被误匹配。
方案2:Excel 2019版本(兼容TEXTJOIN函数)
不需要正则支持,通过逐位校验字符定位连续数字段:
=MID(A2,MIN(IF(ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2)-7)),8)),ROW(INDIRECT("1:"&LEN(A2)-7)))),8)
注意:输入完公式后需要按Ctrl+Shift+Enter三键组合确认数组公式,否则会返回计算错误。
方案3:全版本通用兼容方案
支持所有已发布的Excel版本,不需要新函数特性:
=LOOKUP(9^9,--MID(A2,ROW(INDIRECT("1:"&LEN(A2)-7)),8))
使用注意事项
- 如果提取结果显示为科学计数法,选中结果列,将单元格格式设置为文本或者**数值(小数位数0)**即可显示完整8位数字
- 如果单个单元格内存在多段连续8位数字,上述公式默认返回最先/最后出现的一段,需要提取特定位置的数值可以调整查找起始参数
- 提前清理原始数据中的不可见特殊字符,否则会导致连续数字段被拆分,提取失败
测试样例:若A2单元格内容为
2024-06-20 56231892 采购入库,所有公式都会正确返回56231892,自动剔除日期和其他文字内容,和预期输出效果一致。
内容的提问来源于stack exchange,提问作者Lote_marsk_chozey
相关产品推荐
相关产品推荐

