目录
一、前置准备:文本清洗(必做)
二、核心基础函数速览
三、高版本Excel提取方案(365/2021及以上)
3.1提取11位手机号
3.2提取固定电话号码
3.3提取身份证号
3.4提取中文人名
3.5提取邮箱地址
3.6提取日期
3.7提取金额数字
四、低版本Excel提取方案(2019及以下)
4.1提取11位手机号
4.2提取固定电话号码
4.3提取身份证号
4.4提取中文人名
五、高级提取技巧
六、避坑指南与常见问题
七、公式速查表
一、前置准备:文本清洗(必做)
在进行任何内容提取之前,必须先对单元格文本进行标准化清洗。混杂文本中通常包含大量干扰项:多余空格、换行符、制表符、全角空格、不可见控制字符等,这些都会直接导致提取公式匹配失败。
1.1 通用文本清洗公式
以下公式可一次性清除绝大多数干扰字符,建议将清洗后的文本存入辅助列(如B列),后续所有提取公式基于清洗后的单元格操作。
=TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(A1," "," "),""," ")))
逐段解析
1.CLEAN(A1):清除不可见控制字符,移除文本中的换行符、制表符、换页符等Excel无法显示的控制字符
2.SUBSTITUTE(A1," "," "):全角空格转半角空格,把中文输入下的全角空格替换为标准半角空格,统一分隔符格式
3.SUBSTITUTE(A1,""," "):合并连续空格,把2个及以上的连续半角空格替换为1个,避免空格数量不固定导致的定位错误
4.TRIM(A1):清除首尾空格,移除文本开头和结尾的多余空格
清洗效果示例
原始内容:
张三 13800138000 11010119900101123X 李四 13900139000
清洗后内容:
张三 13800138000 11010119900101123X 李四 13900139000
【注意】建议将清洗公式放在B列,后续所有提取公式统一引用B列,避免重复计算清洗逻辑,大幅提升表格运算速度。
1.2 进阶清洗:去除特殊字符
如果文本中包含更多特殊字符(如横杠、斜杠、括号等),可根据需要增加SUBSTITUTE函数进行替换:
=TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," "," "),"-",""),"/",""),"(",""),")","")))
以上公式额外去除了横杠、斜杠、中文括号。可根据实际数据情况灵活增减替换项。
二、核心基础函数速览
所有提取公式均基于以下核心函数组合实现,先掌握基础函数的用法,才能灵活调整公式适配不同场景。
函数名 | 核心作用 | 语法格式 | 基础示例 |
MID | 从文本中间提取指定长度的字符 | MID(文本, 起始位置, 长度) | MID("ABC123",2,3) → "BC1" |
LEFT | 从文本左侧提取指定长度的字符 | LEFT(文本, 长度) | LEFT("ABC123",3) → "ABC" |
RIGHT | 从文本右侧提取指定长度的字符 | RIGHT(文本, 长度) | RIGHT("ABC123",3) → "123" |
FIND | 查找指定内容的位置(区分大小写) | FIND(查找内容, 文本, [起始位置]) | FIND("1","ABC123") → 4 |
SEARCH | 查找指定内容的位置(不区分大小写) | SEARCH(查找内容, 文本, [起始位置]) | SEARCH("a","ABC123") → 1 |
LEN | 计算文本的字符总长度 | LEN(文本) | LEN("ABC123") → 6 |
IFERROR | 错误处理,公式出错时返回指定值 | IFERROR(公式, 错误返回值) | IFERROR(1/0,"错误") → "错误" |
SUBSTITUTE | 替换文本中的指定内容 | SUBSTITUTE(文本, 旧内容, 新内容) | SUBSTITUTE("A-B","-","") → "AB" |
REGEXEXTRACT | 正则提取(仅365/2021+) | REGEXEXTRACT(文本, 正则表达式) | REGEXEXTRACT(A1,"\d{11}") |
TEXTJOIN | 用分隔符合并多个文本(仅365/2021+) | TEXTJOIN(分隔符, 忽略空值, 文本...) | TEXTJOIN("、",TRUE,A1:A3) |
三、高版本Excel提取方案(365/2021及以上)
高版本Excel原生支持正则函数,是处理混杂文本提取的最优方案,可精准匹配目标内容的特征规则,同时支持「提取第一个匹配项」和「提取单元格内所有匹配项」。
【重要】以下所有公式均基于清洗后的单元格(B列)编写,使用前请确保已完成文本清洗。
3.1 提取11位手机号
3.1.1 手机号特征规则
•以数字1开头
•第二位为3-9之间的数字(排除1、2开头的无效号段)
•后9位为纯数字
•整体共11位,无空格、无符号分隔
3.1.2 提取第一个手机号
适用场景:每个单元格只有一个手机号,或只需要第一个手机号。
=IFERROR(REGEXEXTRACT(B1,"1[3-9]\d{9}"),"无有效手机号")
逐段解析
5.REGEXEXTRACT(B1,"1[3-9]\d{9}"):核心正则匹配
◦1:严格匹配手机号开头的数字1
◦[3-9]:匹配第二位为3-9的合法数字,排除1、2开头的无效号段
◦\d{9}:匹配后面9位纯数字,\d表示任意数字,{9}表示恰好出现9次
◦整体组合刚好匹配11位合法手机号
6.IFERROR(..., "无有效手机号"):容错处理,当文本中无符合规范的手机号时,返回友好提示,避免出现#VALUE!错误
3.1.3 提取所有手机号(全量提取)
适用场景:一个单元格中有多个手机号,需要全部提取出来,用顿号分隔。
=IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"1[3-9]\d{9}",SEQUENCE(100))),"无有效手机号")
逐段解析
7.SEQUENCE(100):生成1到100的数字序列,告诉正则函数最多提取100个匹配项(可根据实际数据量调整数值)
8.REGEXEXTRACT(B1,"1[3-9]\d{9}",SEQUENCE(100)):提取所有匹配的手机号,返回数组结果
9.TEXTJOIN("、",TRUE, ...):把所有手机号用顿号分隔,合并为一个单元格;TRUE表示忽略空值
10.外层IFERROR处理无匹配内容的错误情况
3.1.4 效果示例
原始文本(清洗后):
张三 13800138000 11010119900101123X 李四 13900139000 王五 13700137000
提取第一个手机号结果:
13800138000
提取所有手机号结果:
13800138000、13900139000、13700137000
3.1.5 扩展:带区号/带+86的手机号
如果手机号前可能带有+86或86前缀,使用以下公式:
=IFERROR(REGEXEXTRACT(B1,"(\+?86)?1[3-9]\d{9}"),"无有效手机号")
3.2 提取固定电话号码
3.2.1 固定电话特征规则
•国内固定电话格式:区号-号码
•区号以0开头,3-4位(如010、0755)
•号码为7-8位纯数字
•部分带1-4位分机号(如010-12345678-1234)
3.2.2 提取第一个固定电话
=IFERROR(REGEXEXTRACT(B1,"0\d{2,3}-\d{7,8}(-\d{1,4})?"),"无有效固定电话")
逐段解析
11.0\d{2,3}:匹配区号,以0开头,后跟2-3位数字,覆盖3位区号(010)和4位区号(0755)
12.-:匹配区号和号码之间的横杠
13.\d{7,8}:匹配7-8位的固定电话号码
14.(-\d{1,4})?:可选匹配分机号,括号表示分组,问号?表示前面的分组可出现0次或1次,兼容带/不带分机号的场景
15.外层IFERROR容错处理
3.2.3 提取所有固定电话
=IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"0\d{2,3}-\d{7,8}(-\d{1,4})?",SEQUENCE(100))),"无有效固定电话")
3.2.4 效果示例
原始文本:
公司总机 0755-88888888 售后 010-66666666-1001 销售 021-77777777
提取结果:
0755-88888888、010-66666666-1001、021-77777777
3.3 提取身份证号
3.3.1 身份证号特征规则
•18位二代身份证:前6位地址码 + 8位生日 + 3位顺序码 + 1位校验码(数字或X/x)
•15位一代老身份证:前6位地址码 + 6位生日 + 3位顺序码,纯数字
•校验码可以是大写X或小写x
3.3.2 提取第一个身份证号
=IFERROR(REGEXEXTRACT(B1,"\d{17}[\dXx]|\d{15}"),"无有效身份证号")
逐段解析
16.\d{17}[\dXx]:匹配18位身份证,17位纯数字 + 最后1位数字/X/x,兼容大小写X
17.|:或运算符,正则中的「或」关系,优先匹配前面的18位规则,再匹配后面的15位规则
18.\d{15}:匹配15位纯数字的老身份证号
19.为什么先写18位再写15位?因为正则是从左到右匹配的,如果先写15位,18位身份证的前15位会被先匹配到,导致只提取到15位
20.外层IFERROR容错处理
3.3.3 提取所有身份证号
=IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"\d{17}[\dXx]|\d{15}",SEQUENCE(100))),"无有效身份证号")
3.3.4 效果示例
原始文本:
张三 13800138000 11010119900101123X 李四 310101198505054321 王五 440101800101123
提取结果:
11010119900101123X、310101198505054321、440101800101123
【重要】提取身份证号后,必须将单元格设置为「文本格式」,否则Excel会自动将18位数字转为科学计数法,丢失最后几位数字!
3.4 提取中文人名
3.4.1 中文人名特征规则
•绝大多数中文姓名为2-4个中文字符
•复姓、少数民族姓名可扩展至2-8个中文字符
•纯中文字符,不含数字、字母、符号
3.4.2 通用提取(第一个人名)
适用场景:文本中人名位置不固定,提取第一个出现的中文人名。
=IFERROR(REGEXEXTRACT(B1,"[\u4e00-\u9fa5]{2,4}"),"无有效人名")
逐段解析
21.[\u4e00-\u9fa5]:匹配所有Unicode编码范围内的中文字符,覆盖简体中文和繁体中文
22.{2,4}:匹配2-4个连续的中文字符,覆盖绝大多数常规中文姓名
23.外层IFERROR容错处理
3.4.3 提取所有人名(全量提取)
=IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"[\u4e00-\u9fa5]{2,4}",SEQUENCE(100))),"无有效人名")
3.4.4 带固定前缀的人名提取
如果人名前有固定前缀(如「姓名:」「联系人:」「收货人:」),使用捕获分组精准提取:
=IFERROR(REGEXEXTRACT(B1,"姓名:([\u4e00-\u9fa5]{2,4})"),"无有效人名")
解析:括号()创建捕获分组,正则会优先返回括号内的匹配内容,精准提取「姓名:」前缀后的人名。
3.4.5 效果示例
原始文本:
张三 13800138000 北京市朝阳区 李四 13900139000 上海市浦东新区
提取所有人名结果:
张三、李四
【注意】如果文本中有大量无关中文(如地址、公司名),优先使用「固定前缀匹配」公式,避免误提取。如果是复姓或少数民族姓名,把正则中的{2,4}改为{2,8}扩大匹配范围。
3.5 提取邮箱地址
3.5.1 邮箱特征规则
•标准邮箱格式:用户名@域名.后缀
•用户名可包含字母、数字、点、下划线、百分号、加号、减号
•域名可包含字母、数字、点、减号
•后缀为2位以上的字母
3.5.2 提取第一个邮箱
=IFERROR(REGEXEXTRACT(B1,"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"),"无有效邮箱")
逐段解析
24.[a-zA-Z0-9._%+-]+:匹配用户名部分,+表示前面的字符集出现1次或多次
25.@:匹配邮箱中的@符号
26.[a-zA-Z0-9.-]+:匹配域名部分
27.\.:匹配域名和后缀之间的点号,用\转义因为点在正则中是特殊字符
28.[a-zA-Z]{2,}:匹配域名后缀,至少2位字母
3.5.3 提取所有邮箱
=IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}",SEQUENCE(100))),"无有效邮箱")
3.6 提取日期
3.6.1 YYYY-MM-DD格式日期
=IFERROR(REGEXEXTRACT(B1,"\d{4}-\d{2}-\d{2}"),"无有效日期")
解析:匹配4位年-2位月-2位日的标准日期格式,如2024-01-15。
3.6.2 YYYY年MM月DD日格式日期
=IFERROR(REGEXEXTRACT(B1,"\d{4}年\d{1,2}月\d{1,2}日"),"无有效日期")
解析:匹配中文日期格式,如2024年1月15日、2024年01月15日。
3.6.3 提取所有日期
=IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"\d{4}-\d{2}-\d{2}",SEQUENCE(100))),"无有效日期")
3.7 提取金额数字
3.7.1 带2位小数的金额
=IFERROR(REGEXEXTRACT(B1,"\d+\.\d{2}"),"无有效金额")
解析:匹配带2位小数的金额数字,如1234.56、99.99。
3.7.2 整数金额
=IFERROR(REGEXEXTRACT(B1,"\d+元"),"无有效金额")
解析:匹配带「元」字的整数金额,如100元、5000元。
3.7.3 带千分位的金额
=IFERROR(REGEXEXTRACT(B1,"\d{1,3}(,\d{3})*(\.\d{2})?"),"无有效金额")
解析:匹配带千分位逗号的金额,如1,234,567.89。
四、低版本Excel提取方案(2019及以下)
低版本Excel无原生正则函数,需通过FIND/SEARCH定位特征位置,配合MID/LEFT/RIGHT实现截取。低版本公式仅支持提取第一个匹配项,多内容提取需使用辅助列或VBA。
【重要】以下所有公式均基于清洗后的单元格(B列)编写,使用前请确保已完成文本清洗。
4.1 提取11位手机号
4.1.1 完整校验版公式(推荐)
=IFERROR(IF(AND(MID(MID(B1,FIND("1",B1),11),2,1)>="3",MID(MID(B1,FIND("1",B1),11),2,1)<="9",ISNUMBER(--MID(B1,FIND("1",B1),11))),MID(B1,FIND("1",B1),11),"无有效手机号"),"无有效手机号")
逐段解析
29.FIND("1",B1):找到文本中第一个数字1的位置,作为手机号的起始位置
30.MID(B1,FIND("1",B1),11):从第一个1的位置开始,提取11位字符,这是初步提取的候选手机号
31.MID(MID(B1,FIND("1",B1),11),2,1):从候选手机号中提取第二位字符,用于号段校验
32.AND(...):三重校验,确保提取的内容是合法手机号
◦校验1:第二位数字 >= "3"
◦校验2:第二位数字 <= "9"
◦校验3:ISNUMBER(--MID(...)) 验证11位内容是否为纯数字,--将文本转为数字,ISNUMBER判断是否为数字
33.三重校验都通过则返回提取的11位手机号,否则返回"无有效手机号"
34.最外层IFERROR处理文本中没有数字1的极端情况,避免#VALUE!错误
4.1.2 简化版公式(快速提取)
如果数据比较规范,可使用简化版公式,速度更快:
=IFERROR(MID(B1,FIND("1",B1),11),"无有效手机号")
注意:简化版不做号段校验,可能会把以1开头的其他11位数字误识别为手机号。
4.1.3 效果示例
原始文本:
联系人:张三 电话13800138000 地址:北京市朝阳区
提取结果:
13800138000
4.2 提取固定电话号码
4.2.1 标准公式
=IFERROR(MID(B1,FIND("0",B1),FIND("-",B1)+8-FIND("0",B1)),"无有效固定电话")
逐段解析
35.FIND("0",B1):找到区号开头的0的位置,作为固定电话的起始位置
36.FIND("-",B1):找到横杠的位置
37.FIND("-",B1)+8-FIND("0",B1):计算提取长度
◦从0的位置开始,到横杠后8位结束
◦横杠后8位 = 横杠位置 + 8位号码
◦总长度 = 横杠位置 + 8 - 0的位置
38.MID(B1, 起始位置, 提取长度):提取完整的区号+横杠+8位号码
39.外层IFERROR处理无0或无横杠的错误情况
4.2.2 效果示例
原始文本:
办公电话:021-12345678 联系人:李四
提取结果:
021-12345678
4.3 提取身份证号
4.3.1 优先18位兼容15位公式
=IFERROR(IF(LEN(MID(B1,FIND("1",B1),18))=18,MID(B1,FIND("1",B1),18),IF(LEN(MID(B1,FIND("1",B1),15))=15,MID(B1,FIND("1",B1),15),"无有效身份证号")),"无有效身份证号")
逐段解析
40.FIND("1",B1):找到身份证号开头的1的位置(国内身份证号绝大多数以1开头)
41.MID(B1,FIND("1",B1),18):先尝试提取18位字符
42.LEN(...)=18:检查提取的内容长度是否为18位
43.如果是18位,直接返回提取的内容(优先匹配18位二代身份证)
44.如果不是18位,再尝试提取15位,检查长度是否为15位
45.如果是15位,返回15位内容(匹配一代老身份证)
46.都不符合则返回"无有效身份证号"
47.最外层IFERROR处理文本中没有数字1的极端情况
4.3.2 兼容所有数字开头的公式
如果身份证号可能以其他数字开头(如2、3、4等),使用以下公式找到第一个数字的位置:
=IFERROR(IF(LEN(MID(B1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},B1&"0123456789")),18))=18,MID(B1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},B1&"0123456789")),18),"无有效身份证号"),"无有效身份证号")
解析:MIN(FIND({0,1,2,3,4,5,6,7,8,9},B1&"0123456789")) 这是一个经典的数组公式技巧,用于找到文本中第一个数字出现的位置。
【重要】提取身份证号后,必须将单元格设置为「文本格式」,否则Excel会自动将18位数字转为科学计数法,丢失最后几位数字!
4.4 提取中文人名
低版本Excel提取人名的局限性较大,仅适用于有固定格式的场景。以下是几种常见场景的解决方案。
4.4.1 场景1:姓名在文本开头,后跟空格分隔
=IFERROR(LEFT(B1,FIND(" ",B1)-1),"无有效人名")
解析:找到第一个空格的位置,从文本左侧提取到空格前的内容,即为姓名。
示例:输入「张三 13800138000 北京市」→ 输出「张三」
4.4.2 场景2:姓名有固定前缀(如「姓名:」)
=IFERROR(MID(B1,FIND("姓名:",B1)+3,4),"无有效人名")
解析:找到「姓名:」的位置,从该位置+3(跳过「姓名:」3个字符)开始,提取最多4个字符,覆盖2-4个中文字符的姓名。
示例:输入「订单号:2024001 姓名:李四 电话:13900139000」→ 输出「李四」
4.4.3 场景3:姓名在逗号/顿号之前
=IFERROR(LEFT(B1,FIND(",",B1)-1),"无有效人名")
解析:找到第一个中文逗号的位置,提取逗号前的内容作为姓名。可根据实际分隔符替换为顿号、分号等。
【注意】低版本Excel提取人名的能力有限,如果人名位置不固定且没有明显的分隔符,建议升级到高版本Excel使用正则提取,或使用VBA自定义函数实现。
五、高级提取技巧
5.1 提取第N个匹配项
高版本Excel中,如果需要提取第2个、第3个匹配项,可使用以下公式:
=IFERROR(INDEX(REGEXEXTRACT(B1,"1[3-9]\d{9}",SEQUENCE(100)),2),"无")
解析:INDEX函数从提取结果数组中取第2个元素,把最后的数字2改为N即可提取第N个匹配项。
5.2 多目标同时提取
如果需要在一个单元格中同时提取人名和手机号,可使用文本拼接:
=IFERROR(REGEXEXTRACT(B1,"[\u4e00-\u9fa5]{2,4}"),"无姓名")&":"&IFERROR(REGEXEXTRACT(B1,"1[3-9]\d{9}"),"无电话")
效果示例:张三:13800138000
5.3 提取后自动转为数值
如果提取的数字需要参与计算,可在公式外层加--或VALUE函数转为数值:
=--IFERROR(REGEXEXTRACT(B1,"\d+\.\d{2}"),0)
解析:--是Excel中快速将文本转为数字的技巧,等价于VALUE函数。
5.4 批量提取(数组溢出)
高版本Excel支持动态数组,可一次性提取整列数据:
=IFERROR(REGEXEXTRACT(B1:B100,"1[3-9]\d{9}"),"无有效手机号")
解析:将单元格引用改为区域引用B1:B100,公式会自动溢出到对应行,无需下拉填充。
5.5 版本自动适配
如果需要在高低版本Excel中通用,可使用版本判断公式自动切换:
=IF(ISNUMBER(SEARCH("REGEX",INFO("release"))),IFERROR(REGEXEXTRACT(B1,"1[3-9]\d{9}"),"无有效手机号"),IFERROR(MID(B1,FIND("1",B1),11),"无有效手机号"))
解析:INFO("release")获取Excel版本信息,通过判断是否包含REGEX来识别是否为高版本,自动选择对应的提取公式。
六、避坑指南与常见问题
6.1 常见错误及解决方法
错误现象 | 可能原因 | 解决方法 |
#NAME? | Excel版本太低,不支持REGEXEXTRACT等函数 | 升级到Excel 365/2021及以上版本,或使用低版本兼容公式 |
#VALUE! | 文本中没有找到匹配的内容,FIND函数报错 | 在公式外层包裹IFERROR函数,设置错误时的返回值 |
身份证号显示为科学计数法 | 单元格格式为常规/数值,Excel自动转换 | 先将单元格设置为文本格式,再输入或粘贴公式 |
提取结果为空 | 文本中有多余空格、换行、全角字符等干扰 | 先使用文本清洗公式对原始文本做标准化处理 |
提取到错误的数字 | 订单号、金额等其他数字被误识别 | 增加校验条件,或使用更精确的正则表达式 |
公式计算很慢 | 大量数据重复计算清洗逻辑 | 使用辅助列存储清洗后的文本,避免重复计算 |
6.2 提高提取准确率的技巧
48.增加特征校验:手机号校验号段、身份证校验长度和生日,避免误提取
49.使用固定前缀:如果目标内容前有固定标识(如「姓名:」「电话:」),优先使用前缀匹配,准确率最高
50.先清洗后提取:统一文本格式,去除干扰字符,是提高准确率的基础
51.多轮提取验证:先提取第一个,检查是否正确,再批量应用到整列
52.使用辅助列:把复杂的提取逻辑拆分为多步,每一步的结果放在辅助列,便于调试和排错
6.3 性能优化建议
53.优先使用辅助列:将清洗、定位等中间结果存入辅助列,避免公式重复计算相同内容
54.避免整列引用:不要使用A:A这样的整列引用,尽量使用具体的数据范围,如A1:A1000
55.关闭自动重算:数据量很大时,可将Excel设置为手动重算,全部公式输入完成后再按F9计算
56.高版本优先用正则:正则函数的计算效率远高于多层嵌套的基础函数组合
6.4 数据安全注意事项
57.身份证号、手机号等属于敏感个人信息,提取后请注意数据保密
58.不要将包含敏感信息的表格随意分享或上传到公共平台
59.如果需要分享数据,建议先对敏感信息进行脱敏处理
七、公式速查表
以下是所有常用提取公式的速查表,可直接复制使用。所有公式均基于清洗后的B列。
7.1 高版本Excel(365/2021及以上)
提取目标 | 提取第一个公式 | 提取所有公式 |
11位手机号 | =IFERROR(REGEXEXTRACT(B1,"1[3-9]\d{9}"),"无") | =IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"1[3-9]\d{9}",SEQUENCE(100))),"无") |
固定电话 | =IFERROR(REGEXEXTRACT(B1,"0\d{2,3}-\d{7,8}(-\d{1,4})?"),"无") | =IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"0\d{2,3}-\d{7,8}(-\d{1,4})?",SEQUENCE(100))),"无") |
身份证号 | =IFERROR(REGEXEXTRACT(B1,"\d{17}[\dXx]|\d{15}"),"无") | =IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"\d{17}[\dXx]|\d{15}",SEQUENCE(100))),"无") |
中文人名 | =IFERROR(REGEXEXTRACT(B1,"[\u4e00-\u9fa5]{2,4}"),"无") | =IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"[\u4e00-\u9fa5]{2,4}",SEQUENCE(100))),"无") |
邮箱地址 | =IFERROR(REGEXEXTRACT(B1,"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"),"无") | =IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}",SEQUENCE(100))),"无") |
日期(YYYY-MM-DD) | =IFERROR(REGEXEXTRACT(B1,"\d{4}-\d{2}-\d{2}"),"无") | =IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"\d{4}-\d{2}-\d{2}",SEQUENCE(100))),"无") |
金额(2位小数) | =IFERROR(REGEXEXTRACT(B1,"\d+\.\d{2}"),"无") | =IFERROR(TEXTJOIN("、",TRUE,REGEXEXTRACT(B1,"\d+\.\d{2}",SEQUENCE(100))),"无") |
7.2 低版本Excel(2019及以下)
提取目标 | 提取第一个公式 |
11位手机号 | =IFERROR(IF(AND(MID(MID(B1,FIND("1",B1),11),2,1)>="3",MID(MID(B1,FIND("1",B1),11),2,1)<="9",ISNUMBER(--MID(B1,FIND("1",B1),11))),MID(B1,FIND("1",B1),11),"无"),"无") |
固定电话 | =IFERROR(MID(B1,FIND("0",B1),FIND("-",B1)+8-FIND("0",B1)),"无") |
身份证号 | =IFERROR(IF(LEN(MID(B1,FIND("1",B1),18))=18,MID(B1,FIND("1",B1),18),IF(LEN(MID(B1,FIND("1",B1),15))=15,MID(B1,FIND("1",B1),15),"无")),"无") |
中文人名(开头+空格) | =IFERROR(LEFT(B1,FIND(" ",B1)-1),"无") |
中文人名(姓名:前缀) | =IFERROR(MID(B1,FIND("姓名:",B1)+3,4),"无") |
7.3 辅助公式
文本清洗公式(必做):
=TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(A1," "," "),""," ")))