可通过分列、公式(substitute/find、textbefore/textafter)、power query或vba正则五种方法分离地址中的省市区信息:分列适合有固定分隔符的统一格式;find+left适用于标准“xx省”结构;textbefore/textafter在新版excel中更简洁;power query适合批量复杂清洗;vba正则应对不规范地址最灵活。

如果您在Excel中处理包含完整地址的单元格,需要将其中的省、市、区(县)等层级信息分离到不同列,可通过多种文本处理方式实现。以下是具体操作步骤:
一、使用分列功能按固定符号拆分
当原始地址中省市区之间存在明确分隔符(如“省”“市”“区”“,”或“、”)时,可利用Excel内置的“分列”功能快速分离。该方法无需公式,适合结构较统一的地址数据。
1、选中包含完整地址的列(例如A列),点击【数据】选项卡中的【分列】按钮。
2、在弹出向导中选择【分隔符号】,点击【下一步】。
3、勾选常用分隔符,如【逗号】、【顿号】、【空格】;若地址中含“省”“市”“区”字样,可勾选【其他】并分别输入“省”“市”“区”,注意每次仅输入一个字符并分多次操作。
4、在预览窗口确认分割效果,设置各列数据格式为【常规】,点击【完成】。
二、使用SUBSTITUTE与FIND嵌套提取省级名称
该方法适用于地址以“XX省XX市XX区”标准顺序书写的情形,通过定位“省”字位置,截取其前所有字符作为省份名称。需确保每条地址均含“省”字且无前置干扰文字。
1、在B1单元格输入公式:=IFERROR(LEFT(A1,FIND("省",A1)),"")。
2、若需去除“省”字本身,改为:=IFERROR(LEFT(A1,FIND("省",A1)-1),"")。
3、将公式向下填充至对应行数,B列即显示提取出的省份名称。
三、使用TEXTBEFORE与TEXTAFTER函数(Excel 365/2021)
新版Excel支持动态文本截取函数,可精准按关键词前后提取内容,避免复杂嵌套,对“省”“市”“区”等关键词响应更稳定。
1、提取省份:在B1输入=TEXTBEFORE(A1,"省")&"省"。
2、提取城市:在C1输入=TEXTAFTER(TEXTBEFORE(A1,"区"),"省")&"市"。
3、提取区级:在D1输入=TEXTAFTER(A1,"市"),若结果含“区”字则保留,否则需补全“区”字或结合SUBSTITUTE修正。
四、借助Power Query批量清洗地址
当地址格式混乱、存在多级嵌套(如含“自治州”“直辖市”“特别行政区”)或需长期复用处理逻辑时,Power Query提供可视化条件筛选与自定义列功能,支持容错与迭代优化。
1、选中地址列,点击【数据】→【从表格/区域】,勾选【表包含标题】,进入Power Query编辑器。
2、右键地址列→【拆分列】→【按分隔符】,输入“省”作为分隔符,选择【向右拆分】,生成两列。
3、对新列再次执行拆分,以“市”为分隔符;后续以“区”“县”“街道”等为关键词逐层拆解,并重命名各列为“省份”“城市”“区县”。
4、点击【关闭并上载】,结果自动写入新工作表。
五、使用正则表达式匹配(通过VBA自定义函数)
针对地址中存在大量不规范写法(如“江苏南京”“北京市朝阳区”“新疆维吾尔自治区乌鲁木齐市”)的情况,VBA正则可定义多模式匹配规则,识别并捕获省市区三级关键词组合。
1、按Alt+F11打开VBA编辑器,插入模块,粘贴正则提取函数代码,例如命名为ExtractProvince、ExtractCity、ExtractDistrict。
2、在工作表中调用:=ExtractProvince(A1) 提取省级名称。
3、同理使用=ExtractCity(A1) 和=ExtractDistrict(A1) 分别获取市、区信息。









