可使用Excel 365/2021动态数组函数从混合文本中提取数字:一、TEXTJOIN+SEQUENCE拼接所有数字字符;二、FILTER+SEQUENCE返回数字字符垂直数组;三、REDUCE+LAMBDA高效递归拼接;四、LET简化公式结构提升可读性。

如果您在Excel表格中需要从包含字母、符号和数字混合的单元格中快速提取所有数字,并按出现顺序组成连续数字字符串或独立数字数组,则可借助Excel 365/2021支持的动态数组函数实现自动化分离。以下是具体操作步骤:
一、使用TEXTJOIN与SEQUENCE组合提取全部数字字符
该方法通过生成1至单元格字符长度的序列,逐位判断是否为数字,再将所有数字字符连接成新字符串。适用于提取纯数字串(如“A1B23C4”→“1234”)。
1、假设原始数据位于A1单元格,在B1输入以下公式:
=TEXTJOIN("",TRUE,IF(ISNUMBER(--MID(A1,SEQUENCE(LEN(A1)),1)),MID(A1,SEQUENCE(LEN(A1)),1),""))
2、按下回车键,B1将直接输出A1中所有数字连成的字符串。
3、若A1为空或不含数字,结果返回空文本。
二、使用FILTER与ARRAYFORMULA逻辑构建数字字符数组
该方法利用动态数组行为,先拆解字符串为单字符垂直数组,再筛选出数字字符,最终以溢出数组形式返回各数字字符。适用于需保留数字位置或进一步处理单个数字的场景。
1、在C1输入以下公式:
=FILTER(MID(A1,SEQUENCE(LEN(A1)),1),ISNUMBER(--MID(A1,SEQUENCE(LEN(A1)),1)))
2、公式自动向下溢出,每个数字字符独占一行(如“A1B23C4”返回:1、2、3、4四行)。
3、若需合并为横向数组,可在公式外嵌套TRANSPOSE函数。
三、使用REDUCE与LAMBDA提取并拼接数字(Excel 365 Beta及以上)
该方法通过LAMBDA递归遍历每个字符,仅累积数字字符,避免中间数组占用过多内存,适合长文本高效处理。
1、在D1输入以下公式:
=REDUCE("",SEQUENCE(LEN(A1)),LAMBDA(acc,i,acc&IF(ISNUMBER(--MID(A1,i,1)),MID(A1,i,1),"")))
2、公式一次性返回完整数字字符串,不产生辅助列。
3、注意:此公式要求Excel版本支持REDUCE与LAMBDA函数,旧版不可用。
四、借助LET简化多层嵌套提升可读性
该方法将重复调用的MID与SEQUENCE计算结果命名,使公式结构清晰、易于调试与复用。
1、在E1输入以下公式:
=LET(str,A1,len,LEN(str),chars,MID(str,SEQUENCE(len),1),nums,FILTER(chars,ISNUMBER(--chars)),TEXTJOIN("",TRUE,nums))
2、公式内部定义str、len、chars、nums四个变量,最后拼接数字。
3、所有变量名区分大小写且不可含空格,必须使用英文逗号分隔。










