excel单元格详细地址中提取地级市名称,城市名称是不规则的

excel单元格详细地址中提取地级市名称,城市名称是不规则的(如:上海,北京,是直辖市,前面是没有省份的;石家庄市,是三个字的;乌鲁木齐市,是四个字的;还有什么自治区的.)即取省份后面的第一个城市名称,没省份则取最前面的城市名称.求大神帮忙写条公式.(A列为详细地址,B列为所需的正确城市名称)

B2数组公式,输入完成后不要直接回车,要按三键  CTRL+SHIFT+回车  下拉。

=INDEX(F:F,MATCH(1=1,FIND(F$2:F$700,A2)>0,)+1)&""


注意:必须事先建立F列的城市名称方能得到正确的结果,本例F列的数据为网上下载,不保证准确性。


追问

发现公式有待完善,如上图红色字,例如上海市北京路,应该取的是上海,中山市广州大厦,应该取的是中山.还有最好就是不要F列,如果不小心删除了几行就惨了.

追答

公式还是原来的公式:

=INDEX(F:F,MATCH(1=1,FIND(F$2:F$700,A2)>0,)+1)&""


现在不是公式的问题,上面的回答我特意用加粗的黑字写的很清楚了,必须事先建立F列,EXCEL不可能知道一个国家有哪些城市,这列数据必须正确,公式才能正确,这列实际上就是一个对比的数据库,不论用哪种方法,这个数据库是一定要存在的,没法省略,如果怕不小心删除几行的,可以把F列放到另一工作表,如Sheet2工作表,公式修改为:

=INDEX(Sheet2!F:F,MATCH(1=1,FIND(Sheet2!F$2:F$700,A2)>0,)+1)&""


所以得自己慢慢的更正、补充完整F列了。

追问

首先,非常感谢你的回答,但所得的结果有些会选错.

如上图所示,我是要城市名称,例如

     上海市北京路,,,,,,,我要的是  上海  ,而不是北京.

         中山市广州大厦,,,,,,,,,,,,,,我要的是  中山  ,而不是广州.

               我要的是省份后面的城市名或直辖市名称,你这样会把跟城市相同的路名或房子的命名都拉出来了,会搞乱的.

追答

关键还是在F列这个所谓的数据库对比,当同一个单元格出现两个及以上的城市名字时,优先出现有那个需要放在最底部,如本例这样。


这F列你必须自己手工对比完成,全国600多个城市,真要对比也不是不可能完成的事情,万事开头难啊,电脑也不是万能的,一步到位的想法不现实。

温馨提示:答案为网友推荐,仅供参考
相似回答