Excel单元格移除字母及英国邮编区域代码提取方法咨询
Hey,针对你这两个Excel需求,我整理了几个实用的解决方案,都是日常工作里常用的,咱们一个个说:
1. 移除Excel单元格内的所有字母
方法1:查找替换(最快最省心)
按Ctrl+H打开查找替换对话框:
- 在「查找内容」框里输入
[A-Za-z] - 「替换为」框留空
- 点击「更多」,勾选「使用通配符」选项
- 最后点「全部替换」,就能一次性去掉所有字母了
这个方法适合批量处理静态数据,不用写任何公式,上手最快。
方法2:公式法(支持动态更新)
如果你的单元格内容会随时变化,需要自动同步移除字母,用这个公式(Excel 2019及以后版本直接回车,旧版要按Ctrl+Shift+Enter作为数组公式):
=TEXTJOIN("",TRUE,IFERROR(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)*1,""))
原理是逐个提取单元格里的字符,判断是否为数字——是数字就保留,不是就忽略,最后把所有保留的字符拼接起来。
方法3:Power Query(适合复杂数据集)
如果要处理的是大量且格式复杂的数据,用Power Query更高效:
- 选中目标数据列,点击「数据」选项卡→「从表格/区域」(确保数据有表头)
- 在Power Query编辑器里,点击「添加列」→「自定义列」
- 输入公式:
= Text.Select([你的列名], {"0".."9"}) - 点击「关闭并上载」,数据就会同步到Excel里,以后数据更新了直接刷新查询就行。
2. 提取英国邮编的区域代码
你已经用「文本分列」拆分出了城区代码(比如EN11、SW1W这类),现在要提取开头的纯字母区域代码,这里有几个精准的方法:
方法1:通用公式法(最推荐)
用LEFT结合MIN和SEARCH定位第一个数字的位置,然后提取前面的字母:
=LEFT(B1,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},B1&"0123456789"))-1)
这里B1是你拆分后的城区代码所在单元格。原理是在城区代码后面拼接一串数字,确保能找到第一个数字的位置,然后用LEFT提取该位置之前的所有字母。不管你的城区代码是1个字母开头(比如L1)还是2个(比如EN11),这个公式都能适配。
方法2:FILTERXML简洁公式
如果你喜欢简洁的写法,可以试试这个利用XML节点筛选的公式:
=FILTERXML("<t><s>"&SUBSTITUTE(B1,"","</s><s>")&"</s></t>","//s[translate(.,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','')='']")
它会把每个字符拆成独立的XML节点,然后筛选出纯字母的节点,最后自动拼接成区域代码。
方法3:VBA自定义函数(适合高频使用)
如果你经常需要做这个操作,写个自定义函数更方便:
- 按
Alt+F11打开VBA编辑器 - 右键点击左侧的工作簿名称→「插入」→「模块」
- 粘贴以下代码:
Function GetAreaCode(cell As Range) As String Dim i As Integer GetAreaCode = "" For i = 1 To Len(cell.Value) If Not IsNumeric(Mid(cell.Value, i, 1)) Then GetAreaCode = GetAreaCode & Mid(cell.Value, i, 1) Else Exit For End If Next i End Function - 保存工作簿(注意要保存为「启用宏的工作簿」格式)
- 回到Excel,在单元格里输入
=GetAreaCode(B1)就能直接得到区域代码了。
内容的提问来源于stack exchange,提问作者kreya
相关产品推荐
相关产品推荐

