前面三篇经验主要介绍了“LEFT”、“RIGHT”、“MID” 截取字符串函数的简单应用实例,这三个函数如果能够巧妙结合其它函数,它能够实现的效果肯定会让你惊讶不已。分离单元格内容将分为2个实例来介绍,本次经验介绍如何分离出地址中的省、市、县、详细地址,需要用到的函数有“MID”、“FIND”、“IFERROR”、“LEN”以及连接符“&”。选用较为典型的地址作为例子。
工具/原料
Microsoft office EXCEL 2003 以上的版本 或 WPS
《地址表》
一、单元格内容拆分分析
1、拆分地址需要考虑以下问题:① 省名、市名、县名及详细地址的长度不一。② 地址中可能不存在县的情况。③ 省可能为直辖市、自治区,如果是市区可能无县。
2、不但要计算出省名长度、市名长度、县名长度,还需要把各种特殊情况一起考虑进来。才能成功分离的地址信息。
3、虽然地址有一定的不规则性,但是我们不难发现,省/自治区、市、县/区会包含关键字“省”、“自治区”、“市”、“县”、“区”作划分,好比裁剪线一样。可以依次来计算出相应省/自治区、市、县/区的長度。一些特殊的情況,采用判断是否计算错误来改变计算方式。如在查找关键字“省”时出现找不到的错误,就认为这个地址是直辖市,其它也用相同的办法处理。如果你的数据信息不全,会造成判断错误。
二、单元格内容拆分
1、先介绍需要用到的两个新的函数FIND(find_text,within_text,rt_n[start_nu罪焐芡拂m])函数用查询字符串在某个字符串的位置,如“省”字在某个地址中是第几个字的意思。它包含三个参数,“find_text”为需要查找的值,“within_text”为要被查找的文本,可选参数“start_num”为开始查找的位置,这个位置并不是开始计数的位置,“within_text”的第一个字符才是开始计数的位置。IFERROR(value,value_if_error)函数用于判断运算式是否正确,当为错误时,传回“value_if_error”的值,正确则为“value”。这里我们用于判断是否能够找到关键字,来应付地址的特殊性。
2、在地址中提取国籍是最简单的,没有特殊情况。这里我还是使用“FIND”函数来提取,以鲫蛏费犁便熟悉这一函数的用法。使用“MID”截取字符串挣窝酵聒函数(也可以用LEFT),从第一位开始,一共截取FIND("国",B2,1)位字符。其中FIND("国",B2,1)会自动计算出从B2单元格的左边第一个字符开始到(第一个)关键字“国”的字符数,计算结果是 2.所以共截取两个字符。向下填充即可得到需要的结果。
3、提取省/自治区/直辖市時,需要让计算机去判断是否为直辖市或自治区。不要看到下面一大串内容就觉得复杂,在EXCEL中可以看出,每一个函数的括号都不一样,这有利于我们确定函数到哪里结束。这里说明第一步如何分解,下一步类似。完整的函数如下:=IFERROR(MID(B2,FIND("国",B2,1)+1,IFERROR(FIND("省",B2,1),FIND("自治区",B2,1)+2)-FIND("国",B2,1)),MID(B2,FIND("国",B2,1)+1,FIND("市",B2,1)-FIND("国",B2,1)))
4、提取市,完整函数如下:=MID(B2,LEN(C2&D2)+1,FIND("市",B2,1)-LEN(C2&D2))提取市也较为简单,找出市的位置,然后减去前面省的结果即可。
5、同样的方法提取县/区=IFERROR(MID(B2,FIND("市",B2,1)+1,IFERROR(FIND("区",B2,FIND("市",B2,1))-FIND("市",B2,1),FIND("县",B2,FIND("市",B2,1))-FIND("市",B2,1))),"")
6、最后提取详细地址,就用减法。最后得到下面的结果。