如何在Excel中提取文本中的国家、州、城市至单独列?
从文本字符串提取国家/州省/城市到Excel列的可行方法
方法1:自定义VBA函数(适配多样文本格式)
如果你的文本格式不固定(比如国家/城市位置不统一、有额外修饰词),VBA自定义函数能更灵活匹配:
- 按
Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码:
Function ExtractLocation(textStr As String, listRange As Range) As String Dim cell As Range For Each cell In listRange If InStr(1, textStr, cell.Value, vbTextCompare) > 0 Then ExtractLocation = cell.Value Exit Function End If Next cell ExtractLocation = "" End Function
- 回到Excel,假设国家列表在
Sheet2!A:A,要提取A1单元格的国家,在B1输入:=ExtractLocation(A1, Sheet2!A:A) - 同理,把州省、城市列表分别替换第二个参数,就能提取对应信息。
- 优势:忽略大小写、能匹配文本中任意位置的关键词,比XLOOKUP容错性更强。
方法2:TEXTJOIN+FILTER+SEARCH组合公式(无需VBA)
如果你的关键词列表明确,用这个数组公式(Excel 365/2021支持):
- 提取国家(假设国家列表在
$D$2:$D$100):
=TEXTJOIN("",TRUE,FILTER($D$2:$D$100,ISNUMBER(SEARCH($D$2:$D$100,A1)),""))
- 州省和城市提取只需替换对应的列表范围(比如州省列表
$E$2:$E$100)。 - 你之前用XLOOKUP失败大概率是因为:XLOOKUP默认精确匹配,若文本里的国家名带前后缀、大小写不一致,或关键词在文本中间位置,就会匹配失败。这个组合用SEARCH做模糊匹配,还能自动过滤无匹配的情况。
方法3:Power Query批量处理(适合大数据量)
如果要处理几百上千条数据,Power Query效率更高:
- 选中数据列,点击「数据」选项卡→「从表格/区域」(将数据转成表格)。
- 在Power Query编辑器中,点击「添加列」→「自定义列」,输入公式(以提取国家为例,假设国家列表在另一个表
国家列表的国家列):
= List.First(List.Select(#"国家列表"[国家], (x) => Text.Contains([你的文本列名], x, Comparer.OrdinalIgnoreCase)))
- 同理添加州省、城市的自定义列,最后点击「关闭并上载」,结果会自动同步到新工作表。
- 优势:批量处理、支持大小写忽略、后续数据更新只需刷新即可。
内容的提问来源于stack exchange,提问作者clannishduke
相关产品推荐
相关产品推荐

