想不到最后一个月还小忙了一把,现在可以继续更新博客了^_^
今天要说的是,给你一列地址,如何使用函数嵌套将地址所属的省份取出。
这个问题是看着简单做起来难,但是做完后又发现一点也不难。
mid函数
在开始之前还是先讲讲函数,之前已经说过了find函数,这一章就先讲mid函数。
三个参数:
字符串就是mid函数的作用对象
开始位置指从这串字符中的第几个位置开始取字符
字符个数指我们指定的要取几个字符。
函数解释:在a4单元格的第7个位置取3个字符,在这里也就是“777”了
取出地址中的省份
那么我先让ai随机生成点地址作为示例:
先来百度一下看看中国的省份分布:
可以看到,最常见的就是xx省这种形式。这种直接来个left函数就可以提取,但是有些像黑龙江省,就是xxx省的形式。而自治区也是有各自的长度。
想要使用一个函数就搞定,还是需要先分类讨论。这样才能使用if函数嵌套。
1.首先是特别行政区,就香港和澳门了。
2.然后是四大直辖市,这种可使用left函数提取
3.省的话需要考虑一个黑龙江省,因为它是四个字,其他像浙江省和台湾省都是三个字
4.最后是自治区,长度各不相同。
虽然省和自治区长度会有所不同,但是都存在“省”和“自治区”这样的字样,这样就可以方便我们定位。
接下来开始重头戏,写函数了。
第一种:
要判断地址是不是两个特别行政区,就看他第三个字符是不是“特”这个字,如果是的话就返回前两个字符--也就是香港或者是澳门,如果不是就不用管。
第二种:
跟上面一样,只要字符的第三个字是“市”这个字,这个就是直辖市了。然后就把前三个字取出来,就是结果了。
第三种:
这种稍微复杂点,意思就是说字符串中出现了“省”这个字,就把xx省取出来。
这一部分的意思就是上一章说的,如果存在“省”这个字就执行假值,如果不存在“省”这个字就执行真值。
真值就是说不存在省了,那就不用管
现在来说说假值。
这个if函数的假值中的写法完全就是为了黑龙江省,因为其他都是三个字,直接取就行。但是黑龙江省是四个字,所以需要定位。这个函数的意思就是在字符串中从第一个字符开始取,取到第几个结束呢,那不就是“省”这个字的位置吗^_^
省字的位置就是mid函数中需要取的字符的长度。
第四种就是自治区
按理来说这种也应该先用if和iferror以及find函数嵌套一下来判断“自治区”这三个字是否在这一串字符中,但是如果前三种情况都已经过完了,那么最后一种情况不就是自治区了吗
正如福尔摩斯里的一句话:
“当你排除一切不可能的情况,剩下的,不管多难以置信,那都是事实”
那么取xxx自治区也是跟取xx省一样的
这个函数的意思就是从a12单元格的第一个字符开始取
取到哪里结束呢?
首先需要使用find函数来定位“自”这个字的位置,然后因为我们需要取出的是“xx自治区”,所以需要加2这样使用mid函数就是取到xxxx自治区了。
最后把这四个情况使用if函数的嵌套中的嵌套来区分。
是不是看着很头大O(∩_∩)O哈哈~
先来看下效果:
精准无误
最后的函数就是在if函数中嵌套if,这样就可以把四种情况表示出来。
需要注意的是后面的iferror嵌套,如果存在“省”就执行假值把省取出来,如果不存在就执行真值把xxx自治区取出来。
整改函数说白了其实就是第一if函数先判断第三个字是否为特,是的话就取出前两位,不是的话就执行假值。
第一个假值又是一个if函数,在这个if函数中先判断第三个字是否为市,是的话就取出前三位,不是的话就执行假值。
最后一个if函数嵌套了iferror,就是为了判断是否存在省这个字,如果存在就执行假值将省取出来,如果不存在就执行真值把xxx自治区取出来。
也就是说前三种情况--特别行政区、直辖市和省都不是的情况,剩下的一种就是自治区了,也就可以直接取。