EXCEL处理单元格中复杂且无规律的文本数据,提取数字、字母、汉字
比如下面的文本数据,需要分离出数字和字母或汉字部分,其中数字长度不一致、包含小数点。将采用三种方式,正则表达式、EXCEL函数、Ctrl+E快捷键,实现数字、字母或汉字分离。
一、正则表达式
在目标单元格中输入公式:=REGEXP(A2,"[\d.]+"),下拉填充,再二次处理
*⚠️ 注:=REGEXP(A2,“\d+”,3),若选择匹配模式3,则完整提取,返回全部匹配结果,结果更精确 *
\d:表示匹配任意单个数字(等价于[0-9])
\D:表示匹配任意非数字字符(等价于^[0-9])
\w:匹配任意字母数字字符(等价于[a-zA-Z0-9_])
\W:匹配任意非字母数字字符(等价于[^a-zA-Z0-9_])
\s:匹配任意空白字符(包括空格、制表符、换行符等)
\S:匹配任意非空白字符
所以,=REGEXP(A2,"[\d.]+")这个公式的作用是检查单元格A2的文本是否包含至少一个或连续多个数字(带小数点)
*注:REGEXP函数最终返回的结果是文本,如果提取的是文本型的数字,则需要通过--或其他不改变其值的四则运算将其转为真数字。 *
二、函数
使用函数方式实现思路是:先获取数字或字母、中文的内容/长度/位置,再通过截取或替换的方式提取对应的部分
——获取数字或字母、中文的内容/位置,可以通过正则表达式、LEN或LENB函数
——截取或替换的方式提取文本,可以通过LEFT或RIGHT函数、SUBSTITUTE替换函数
在目标单元格中输入LEFT函数:=LEFT(A2,LEN(REGEXP(A2,"[0-9.]+"))),SUBSTITUTE函数:=SUBSTITUTE(A2,D2,"")
所以,=SUBSTITUTE(A2,D2,""),使用空字符串替换D2(数字部分)内容,即为剩余的文本部分
三、Ctrl+E快捷键
在目标单元格中输入数字,按Ctrl+E快捷键,后续填充,再二次处理