如何将Excel地址列中全大写的城市提取至新列?
提取地址中全大写城市名的可行方法
针对地址格式不统一、仅城市名为全大写的情况,以下是三种实用提取方案:
1. Excel 365/2021 公式法
假设地址数据在A列,在目标列(如B2)输入以下公式,下拉填充即可:
=TEXTJOIN(" ",TRUE,FILTERXML("<t><s>"&SUBSTITUTE(A2," ","</s><s>")&"</s></t>","//s[translate(.,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')=.]"))
原理:将地址按空格拆分为单个元素,通过FILTERXML筛选出与自身全大写形式完全一致的元素,最后用TEXTJOIN拼接成完整城市名。
2. Power Query 批量处理法
适合大量数据的批量提取,步骤如下:
- 选中地址列,点击「数据」选项卡→「从表格/区域」(勾选「我的表格有标题」),进入Power Query编辑器
- 点击「添加列」→「自定义列」,输入公式:
=Text.Combine(List.Select(Text.Split([地址]," "), each _ = Text.Upper(_)), " ") - 点击「关闭并上载」,提取结果会生成新工作表,可将结果复制到原表格的新列中
3. VBA 自定义函数法(兼容全版本Excel)
适合Excel 2019及更早版本,操作步骤:
- 按
Alt+F11打开VBA编辑器,右键点击当前工作簿→「插入」→「模块」 - 粘贴以下代码:
Function GetCity(address As String) As String Dim arr() As String, i As Integer, result As String arr = Split(address, " ") For i = LBound(arr) To UBound(arr) If arr(i) = UCase(arr(i)) Then result = result & arr(i) & " " End If Next i GetCity = Trim(result) End Function - 返回Excel界面,在目标单元格输入
=GetCity(A2),下拉填充即可提取城市名
内容的提问来源于stack exchange,提问作者UserSN
相关产品推荐
相关产品推荐

