可借助SUBSTITUTE嵌套或TEXTJOIN+FILTER+CODE数组公式提取汉字:前者通过多次替换非汉字字符为空,兼容Excel 2016及以上;后者基于Unicode编码范围(19968–40869)精准筛选,仅支持Excel 365/2021。

如果您在Excel中处理混合文本,例如“张三ABC123”或“上海Shanghai2024”,需要将其中的汉字、英文字母及数字分别提取出来,则需借助文本函数组合实现精准拆分。以下是多种可直接应用的函数方案:
本文运行环境:MacBook Air,macOS Sequoia。
一、使用SUBSTITUTE嵌套配合LEN提取纯汉字
该方法利用汉字在Unicode中不参与英文/数字替换的特性,通过多次替换非汉字字符为空,保留原始汉字序列。适用于仅含汉字、英文字母与数字的字符串,且不依赖Office 365新函数。
1、假设原始数据在A2单元格,B2输入以下公式:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"0",""),"1",""),"2",""),"3",""),"4",""),"5",""),"6",""),"7",""),"8",""),"9","")
2、继续对英文字母替换:在上式基础上追加10次SUBSTITUTE,依次替换“A”至“Z”和“a”至“z”为空字符。
3、为简化操作,可先用辅助列生成全部字母列表,再用REDUCE(仅Excel 365支持)替代;但本方案兼容Excel 2016及以上版本,无需高级函数。
二、使用TEXTJOIN+FILTER+CODE数组公式提取汉字(Excel 365/2021)
该方法基于Unicode编码范围识别汉字:常用汉字的CODE值位于19968–40869之间。通过逐字判断编码是否落入该区间,筛选后合并输出,准确率高且不依赖字符位置。
1、选中C2单元格,输入以下动态数组公式(按Enter即可溢出):
=TEXTJOIN("",TRUE,FILTER(MID(A2,SEQUENCE(LEN(A2)),1), (CODE(MID(A2,SEQUENCE(LEN(A2)),1))>=19968)*(CODE(MID(A2,SEQUENCE(LEN(A2)),1))
2、若出现#NAME?错误,请确认当前Excel版本支持SEQUENCE与FILTER函数;否则切换至方案一或四。
三、正则表达式模拟法(VBA自定义函数)
Excel原生不支持正则,但可通过VBA编写RegExpExtract函数,实现类似“[\u4e00-\u9fa5]+”匹配汉字、“[a-zA-Z]+”匹配字母、“[0-9]+”匹配数字的灵活提取,适合高频、多规则拆分场景。
1、按Alt+F11打开VBA编辑器,插入新模块。
2、粘贴以下代码:
Function RegExpExtract(str As String, pattern As String) As String
Dim regEx As Object
Set regEx = CreateObject("VBScript.RegExp")
With regEx
.Global = True
.IgnoreCase = True
.Pattern = pattern
End With
If regEx.Test(str) Then
RegExpExtract = regEx.Execute(str)(0).Value
Else
RegExpExtract = ""
End If
End Function
3、返回工作表,在D2中输入:
=RegExpExtract(A2,"[\u4e00-\u9fa5]+") 提取首段汉字;
=RegExpExtract(A2,"[a-zA-Z]+") 提取首段字母;
=RegExpExtract(A2,"[0-9]+") 提取首段数字。
四、使用LET+CONCAT+MAP组合(Excel 365最新语法)
该方案以单公式完成三类字符分离,结构清晰、可读性强,利用MAP对每个字符映射判断逻辑,再用CONCAT聚合,避免长嵌套SUBSTITUTE带来的维护困难。
1、在E2中输入以下公式:
=LET(txt,A2,lenTxt,LEN(txt),chars,MID(txt,SEQUENCE(lenTxt),1),codes,CODE(chars),isCN,(codes>=19968)*(codes
2、复制该公式并修改最后一项IF条件:将isCN替换为isAlpha可得英文部分,替换为isNum可得数字部分。
五、Power Query图形化拆分(免公式、支持批量)
适用于大量数据清洗,无需记忆函数,通过界面操作即可按字符类型自动分列,结果可刷新更新,适合非编程用户或需重复处理同类文件的场景。
1、选中数据列 → 数据选项卡 → “从表格/区域”导入到Power Query编辑器。
2、选择该列 → 转换选项卡 → “按字符分隔” → 分隔符选“每个字符” → 点击确定。
3、选中新生成的“字符”列 → 转换选项卡 → “数据类型” → “文本” → 右键该列 → “按示例转换” → 输入“汉” → 回车,系统自动识别汉字行;同理创建“字母列”“数字列”并填充对应判断逻辑。
4、选中三列 → 转换选项卡 → “合并列” → 分隔符留空 → 名称设为“汉字提取”等。










