发布网友 发布时间:2022-04-19 22:06
共1个回答
热心网友 时间:2023-06-30 14:12
「如何从Excel单元格中的文本值提取指定的数据出来?」
就比如做电商的同学可能经常遇到收货地址需要拆分成省市区的问题。
但是用户提交的地址信息不一定规范,就导致拆分的时候需要人工一个一个识别。
本期内容,以溪带你看看工作中常见的文本拆分与提取的案例问题。
如果有你现在正在遇到的问题,可以直接套用。
「案例列表」
Excel中有专门的文本提取函数,其中mid、left、right分别用于从中间、左侧、右侧提取文本中的指定长度内容。
依次举例说明:
函数参数:
MID(text,start_num,num_chars)
第一个参数是待提取的文本字符串,第二个是开始提取的字符位置数,第三个参数是从文本中提取的字符数
函数参数:
LEFT(text, [num_chars])
第一个参数是待提取的文本字符串,第二个参数不填默认为1,代表提取的字符数。
函数参数:
RIGHT(text, [num_chars])
第一个参数是待提取的文本字符串,第二个参数不填默认为1,代表提取的字符数。
可以注意到,这三个参数,都有几个共同点。
理解了上面这个问题,那解决实际案例的所有「关键点」就在2、3两点上了。
如果地址数据的省市区之间有分隔符的,可以直接使用「数据-分列-按指定字符分列」即可完成拆分。
如果是像下图这种没有分隔符的地址,有两种方法可以实现拆分。
通过上面的3个函数,我们知道,想要拆分提取字符,必须要知道从哪提取,提取多少。
所以,第一步,我们需要知道在地址中,省这个字符的具体位置,以及省字符前面有多少字,就能直接提取出省这个字符串了。
在这里引入两个函数,一个是find,一个是len。
除了查找和统计字符数,Excel也提供findb与lenb函数,函数核心功能与find和len都一样。
唯一的区别就是,带b的函数,代表查找或计数的是字节数,反之是字符数。
其中日语、中文(简体)、中文(繁体)以及朝鲜语一个字符算2个字节数。参考下图理解,find和findb用于查找同学位于以溪123同学中的位置。
回到拆分地址上,那第一个,就是查找省这个字位于地址中的位置。
如此得到省的位置后,我们便可以通过left函数,直接提取出省名称。
前面的是不是都很成功,但是最后一个自治区,就识别不出来了。
主要是我国的行政区划分,不是所有的省级行政区都是省结尾的,还包括有市、区。
所以这里,我们需要通过数组公式,来一次性提取出省、市、区这三个字在地址中的位置。
数组公式如下:
「注意数组公式,需要按照数组公式输入方法使用」
目前只是把地址中省市区出现的位置找到了,还需要对数字进行对比,最小的那个,代表最先出现,也就是省级行政单位的位置。
所以我们使用min函数对其嵌套,得到最小位置数,再使用left函数提取,就能正确获得一级行政区名称。
但是由于min函数不能统计包含#VALUE!的错误值数据,所以我们在find公式中的地址参数那里,手动拼接一个省市区字符串,使其不管怎么样,都不会返回错误值。确保min函数正确运行。
数组公式如下:
至此第一个省级名称,提取完毕。
如果将原地址中的省级名称去除,那么剩下的地址中,就只包含地级和县级行政区地址信息。
使用substitute函数,就可以替换字符串中的指定字符为空,也就是替换为""。
函数公式如下:
我们借用了刚刚提取的省级名称,生成了新的地址,基于这个地址我们采用同样的方法提取地级行政区名称。
只需要把省级行政区的公式中的地址A2全部替换成上面的subtitute函数公式,再把对应的地级行政区的后缀,市、区、州、盟,全部修改,就可以了。
最终的数组公式如下:
最后一个直接使用substitute函数替换即可。
数组公式如下:
如果你不想用上面这么长的公式,又或者地址信息没有这么完整,存在不清晰的问题!!
「那就使用方方格子插件来完成地址提取,速度飞快。」
操作路径:方方格子-高级文本处理更多-提取地址-选择地址范围-确定-点击结果存放单元格-确认
最终结果如下图,几秒钟就搞定了。
即使地址不是特别规范,也能大概匹配拆分出来。
当然,最终还需要仔细检查一下是否存在拆分出错的情况。
如下图数据所示:
文本中用-分隔各个信息,其中第二个是产品名称,最后一个是核销状态。
如果是比较规范的数据,就可以先手动提取一行,如下图:
然后按快捷键CTRL+E,智能拆分提取,就能提取出对应的数据。
但是,这个案例,CTRL+E没法很好的拆分出来,比如产品名称,此时可以选择使用函数公式,将产品名称和核销状态提取出来。
提取产品名称:
提取最后一个核销状态:
如下图所示,字母和数字在文本中的不同位置,现在想要将字母和数字全部提取。
从文本中提取字母和数字的公式如下:
如果只想提取字母或者数字,则使用下面的公式:
只提取大小写字母的数组公式,请使用数组三键CTRL+SHIFT+回车确认公式:
如果只提取数字,则数组公式如下:
如果用数组公式觉得太麻烦,也可以使用Excel插件来提取字符,如果你会编写正则表达式,那无论是多奇怪的字符,都可以通过插件运行正则表达式提取指定的字符出来。
插件提取方法路径如下:
方方格子-高级文本处理-更多
同时在提取更多里面,还支持提取链接以及之前说的拆分地址。
在高级提取功能里,支持额外4种提取需求,如图所示。
以上,就是以溪总结的文本字符串提取的相关案例,如果你有实际需求没有在以上案例,可以留言讨论。