精心整理Excel从文本中提取指定字符的4种案例!

如题所述

「如何从Excel单元格中的文本值提取指定的数据出来?」

例如,电商从业者经常需要将收货地址拆分为省、市、区。

然而,用户提交的地址信息可能不规范,导致拆分时需要人工逐一识别。

本期内容,以溪带你了解工作中常见的文本拆分与提取的案例问题。

如果你正面临类似的问题,可以直接应用这些方法。

1. mid\left\right文本提取函数使用

Excel中有专门的文本提取函数,包括mid、left、right,分别用于从文本中间、左侧、右侧提取指定长度的内容。

以下是函数参数说明:

MID(text,start_num,num_chars)

第一个参数是待提取的文本字符串,第二个参数是开始提取的字符位置数,第三个参数是从文本中提取的字符数。

LEFT(text, [num_chars])

第一个参数是待提取的文本字符串,第二个参数不填默认为1,代表提取的字符数。

RIGHT(text, [num_chars])

第一个参数是待提取的文本字符串,第二个参数不填默认为1,代表提取的字符数。

这三个函数的共同点是:需要提供待提取的文本字符串,告诉函数从哪提取,以及提取多少个字符。

理解了这些,解决实际案例的关键就在于第2、3点。

2. 地址拆分

如果地址数据的省市区之间有分隔符,可以直接使用「数据-分列-按指定字符分列」进行拆分。

如果地址没有分隔符,可以使用以下两种方法实现拆分:

要拆分提取字符,必须知道从哪提取,提取多少。

所以,第一步是确定地址中省这个字符的具体位置,以及省字符前面有多少字,就能直接提取出省这个字符串。

在此引入两个函数:find和len。

find函数用于查找指定字符在字符串中的字符数位置,函数返回值是一个数字。

len函数用于返回指定字符串的字符数。

Excel还提供了findb和lenb函数,函数核心功能与find和len相同。

唯一的区别是,带b的函数代表查找或计数的是字节数,反之是字符数。

对于日语、中文(简体)、中文(繁体)以及朝鲜语,一个字符算2个字节数。

回到地址拆分,需要查找省这个字在地址中的位置。

通过left函数,可以直接提取出省名称。

但是,最后一个自治区识别不出来。

因为我国行政区划分,不是所有省级行政区都以省结尾,还包括市、区。

所以需要通过数组公式一次性提取出省、市、区这三个字在地址中的位置。

数组公式如下:

至此,第一个省级名称提取完毕。

如果将原地址中的省级名称去除,剩下的地址就只包含地级和县级行政区的地址信息。

使用substitute函数替换字符串中的指定字符为空。

然后,使用同样的方法提取地级行政区名称。

只需要将省级行政区的公式中的地址A2全部替换成上面的substitute函数公式,再把对应的地级行政区的后缀修改为市、区、州、盟即可。

最后一个直接使用substitute函数替换即可。

如果你不想使用上述公式,或者地址信息不完整,存在不清晰的问题,可以使用方方格子插件完成地址提取,速度飞快。

操作路径:方方格子-高级文本处理更多-提取地址-选择地址范围-确定-点击结果存放单元格-确认

最终结果如下图,几秒钟就完成了。

即使地址不规范,也能大致匹配拆分出来。

当然,最终还需要仔细检查是否存在拆分错误的情况。

3. 提取指定字符-分隔的指定个数字符

以下是数据示例:

文本中用-分隔各个信息,其中第二个是产品名称,最后一个是核销状态。

对于规范的数据,可以先手动提取一行,然后按快捷键CTRL+E进行智能拆分提取。

但是,对于本案例,CTRL+E无法很好地拆分,如产品名称,此时可以选择使用函数公式提取产品名称和核销状态。

提取产品名称:

提取最后一个核销状态:

「提取产品名称公式原理解析:」使用find函数找到第一个指定字符-的位置数,然后继续使用find函数找到指定字符-,此时find函数的第三个参数为第一次find函数的结果值+1,即从第一个指定字符-的下一个字符位置开始查找,找到第二个-的位置。

「提取最后一个核销状态公式原理解析:」使用substitute函数将所有的指定字符-替换为长度和字符串长度一致的空格。

然后,使用right函数从替换后的字符串右侧提取长度为原本字符串长度的文本。

此时的文本是空格和最后一个核销状态数据,使用trim函数去除文本中的空格。

4. 只提取数字或者字母

以下是数据示例:

字母和数字在文本中的不同位置,现在想要将字母和数字全部提取。

从文本中提取字母和数字的公式如下:

「从字符串中提取字母数字公式原理解析:」公式使用了字节和字符两种不同的计算方法。

使用minb函数提取指定字节数的数据,lenb和len分别统计字节和字符数量。

由于字母数字和符号都是1个字节,中文是2个字符,通过searchb查找任意1个字节在字符串中的出现位置,就能定位字符串中第一个字母数字或符号出现位置。

然后,使用midb函数提取。

提取位数则通过len和lenb的计数来计算,lenb减去len得到的就是中文字符的数量,即2,换算就是4个字节。

最后,使用substitute函数去除指定的符号,就提取完成了。

如果只想提取字母或数字,可以使用以下公式:

只提取大小写字母的数组公式,请使用数组三键CTRL+SHIFT+回车确认公式:

如果只提取数字,则数组公式如下:

「从字符串中单独提取字母或数字公式原理解析:」上述提取字母和数字都使用了相同的原理,即使用code函数获取不同字符的对应编码。

其中,数字0到9的编码为48到57,大写字母A到Z的编码为65到90,小写字母a到z的编码为97到122。

公式是数组公式,使用mid将字符串拆分成单独的字符,再通过code函数得到编码,与对应编码对比,区分字母和数字。

最终通过if函数判断保留字母或数字,使用concat函数将保留的字符拼接在一起。

其中用到了sequence序列函数用法以及filter函数的多条件式判断,建议在以溪主页查看对应文章深入了解。

如果使用数组公式觉得太麻烦,也可以使用Excel插件来提取字符。

如果你会编写正则表达式,那么无论是多奇怪的字符,都可以通过插件运行正则表达式提取指定的字符出来。

插件提取方法路径如下:

方方格子-高级文本处理-更多

同时在提取更多里面,还支持提取链接以及之前说的拆分地址。

在高级提取功能里,支持额外4种提取需求,如图所示。

以上,就是以溪总结的文本字符串提取的相关案例,如果你有实际需求没有在以上案例中,可以留言讨论。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜