如何删除Excel列中的非英语字符?
在Excel中管理数据时,通常需要清理文本,尤其是在处理可能包含不需要或不一致字符的列表时。例如,您可能会有一列名称或条目,其中某些单元格包含非英语字符(如带重音的字母、特殊符号或外语脚本),您需要删除这些字符以满足数据一致性要求或进行进一步处理。
手动删除这些字符会非常耗时且容易出错,特别是在处理大型数据集时。为了高效解决这个问题,Excel提供了几种方法:您可以使用VBA脚本自动删除包含任何非英语字符的行,或者通过删除文本中的非英语字符就地清理数据,同时保持数据结构完整。在这里,我们介绍两种实用的解决方案,帮助您处理这些场景。
使用Kutools for Excel删除字符串中的非英语字符
使用VBA删除包含非英语字符的行
如果需要从Excel特定列中完全删除包含任何非英语字符的整行,可以使用VBA脚本来自动化这一过程。这种方法特别适用于当您希望确保只保留包含标准英文字母字符的单元格时,任何包含外语字符或特殊符号的单元格都将导致整行被删除。此方法对于准备导入只接受标准英语字符系统的干净数据集尤其有用。
但是,请注意这种方法一次只能针对一列;如果您希望将其应用于其他列,则需要为每一列分别运行脚本。此外,一旦执行,删除的行将无法恢复,除非您已创建备份或可以使用撤销功能。
以下是分步指南:
1. 打开您的Excel工作簿,激活包含要处理列的工作表,然后按 Alt + F11 打开 Microsoft Visual Basic for Applications 窗口。这使您可以访问内置在Excel中的VBA编程环境。
2. 在VBA编辑器中,单击 插入 > 模块 创建一个新模块,然后将以下VBA代码复制并粘贴到出现的代码窗口中:
VBA:删除非英语字符
Sub RemoveNonEnglish()
'UpdatebyExtendoffice20171204
Dim xRg As Range
Dim xCell As Range
Dim I As Long
Dim J As Long
Dim xRows As Long
Dim xAsc As Long
On Error Resume Next
Set xRg = Application.InputBox("Select single column:", "KuTools For Excel", Selection.Address, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
xRows = xRg.Rows.Count
Set xRg = xRg(1)
For I = 1 To xRows
Set xCell = xRg.Offset(I - 1)
If xCell.Value <> "" Then
For J = 1 To Len(xCell.Value)
xAsc = Asc(UCase(Mid(xCell.Value, J, 1)))
If xAsc < 65 Or xAsc > 90 Then
xCell.EntireRow.Delete
I = I - 1
Exit For
End If
Next
End If
Next
Application.ScreenUpdating = True
MsgBox "Completed...", vbInformation
End Sub
3. 按下 F5 或点击 运行 按钮来执行代码。将会弹出一个对话框,提示您“选择单列”。使用鼠标选择要在工作表中处理的列,然后点击 确定.
4. 通过点击确认您的选择 确定 在随后的对话框中。脚本将审查所选列中的每个单元格。如果它检测到任何不是大写或小写英文字母(A-Z)的字符,它将删除包含该单元格的整行。完成后,您将看到一个提示,告知您该过程已完成。
![]() | ![]() | ![]() |
注意:此VBA脚本一次只能用于单列选择。建议在运行代码之前保存您的工作簿,因为在操作后删除的行无法恢复。如果您的数据量很大或包含特殊格式,强烈建议事先创建备份。
故障排除提示:如果您看到错误消息或似乎没有任何反应,请检查是否选择了有效列并且仅选择了一列(而不是跨越多列的区域)。必须启用VBA才能运行此脚本。如果VBA编辑器在您的环境中被锁定或限制,请考虑启用权限或使用替代方法。
适用性:如果您希望确保数据中仅包含纯英语字母条目,并且不需要保留包含任何特殊或外语字符的行,这种方法是最好的。但是,如果您的目的是在保留数据的同时简单地删除非英语字符——但不删除整行——请考虑使用Kutools解决方案或其他下面的方法。
使用Kutools for Excel删除字符串中的非英语字符
如果您希望通过删除单元格内的非英语字符来清理文本——而不删除任何行——Kutools for Excel中的“删除字符”功能提供了一个快速且实用的解决方案。这适合于您希望保留整体数据结构但删除字符串内任何特殊、带重音或外语字符的情况,只留下常规的英文字母可见。
例如,这种方法非常适合标准化名称、产品代码或任何可能输入错误或从外部来源复制的字母数字条目,结果会出现各种符号或非英语字符。与手动清理相比,这减少了遗漏不需要字符的风险并加快了处理速度。
![]() | ![]() | ![]() |
1. 选择包含要清理的文本字符串的范围,然后转到 Kutools 选项卡,在Excel功能区中,点击 文本,然后选择 删除字符 从下拉菜单中。有关参考,请参见下面的屏幕截图:
2. 在 删除字符 对话框中,勾选 非字母 选项(该选项针对非字母字符,包括数字、标点符号和特殊或非英语符号)。 预览 窗格会自动更新,向您展示删除非英语和特殊字符后文本的外观。
3. 在确认预览符合您的期望后,点击 确定。所有非英语字符(即,任何不是标准英文字母的内容)都会立即从所选范围中删除,而其余数据保持不变。
Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取
如果您经常需要在Excel中清理文本,Kutools方法提供了一个用户友好的、可视化的界面,并能在几次点击内高效处理大量数据范围。它还提供了撤销支持,因此如果结果不符合您的需求,您可以快速还原更改。
提示和注意事项:'非字母'选项还会删除文本中的任何数字或特殊标点符号。如果您需要保留数字或其他特定字符,请尝试在对话框中使用不同的复选框,直到达到您想要的结果。始终查看预览窗格以在按下确定之前确认效果。
比较:此方法比VBA行删除更灵活,因为它只删除不需要的字符,而不是整行,因此如果有丢失与每行相关的重要信息的风险,它的破坏性较小也更安全。
使用Excel公式删除非英语字符
如果您没有Kutools或不想使用VBA,也可以使用Excel公式从单元格中的文本中删除非英语字符(即,任何不是英语字母的字符)。这种方法适用于您希望采用非破坏性的基于公式的解决方案的情况,该方案可以应用到每一行并轻松复制到其他单元格。
1. 在输出列的第一个单元格中输入以下数组公式(例如,如果您的原始数据在A列中,则为B1):
=TEXTJOIN("",TRUE,IF((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>=65)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<=90)+(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>=97)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<=122),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),""))
此公式检查单元格A1中的每个字符,仅当它是大写(A-Z)或小写(a-z)英文字母时保留它,并将结果连接成一个清理后的字符串。
2. 输入此公式后,按 Ctrl+Shift+Enter(对于早于Office 365的Excel版本;在Office 365及更高版本中,只需按 Enter 即可)。通过拖动填充手柄或双击单元格右下角的填充手柄,将公式复制到所有相关行。
参数解释:此公式利用MID、CODE(返回ASCII码)、INDIRECT和ROW函数处理目标单元格中的每个字符。只保留字母a-z或A-Z。
注意事项:此方法不会更改原始数据;输出是目标列中的公式结果。如果您需要固定的静态值,请复制结果并使用粘贴值覆盖公式。
局限性:文本长度影响公式性能。此方法可能无法正确处理多字符Unicode字素,因此如果由复合Unicode序列表示,一些视觉上非英语的字符可能仍然存在。
使用VBA删除单元格文本中的非英语字符
如果您想删除单元格文本内的非英语字符(而不删除整行),还可以使用VBA进行更多自定义的自动化。这对于必须频繁运行的数据清洗任务以及在无法使用插件的情况下非常实用。
1. 打开Excel,然后按 Alt + F11 启动 Microsoft Visual Basic for Applications 编辑器。转到 插入 > 模块 并将以下代码粘贴到模块窗口中:
Sub RemoveNonEnglishCharactersFromCells()
' Remove non-English characters, keep only a-z, A-Z
Dim rng As Range
Dim cell As Range
Dim i As Long
Dim ch As String
Dim output As String
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set rng = Application.Selection
Set rng = Application.InputBox("Select range to clean (cells will be altered):", xTitleId, rng.Address, Type:=8)
If rng Is Nothing Then Exit Sub
Application.ScreenUpdating = False
For Each cell In rng
output = ""
For i = 1 To Len(cell.Value)
ch = Mid(cell.Value, i, 1)
If (Asc(ch) >= 65 And Asc(ch) <= 90) Or (Asc(ch) >= 97 And Asc(ch) <= 122) Then
output = output & ch
End If
Next i
cell.Value = output
Next cell
Application.ScreenUpdating = True
MsgBox "Cleanup complete.", vbInformation
End Sub
2. 返回Excel,选择要清理的范围,返回VBA编辑器并通过按 F5 或点击 运行 按钮来运行代码。出现提示时,选择要处理的范围并确认。
效果:此代码处理每个选定的单元格,删除任何不是标准英文字母的字符,并用清理后的结果更新单元格。原始数据将被覆盖,因此备份您的表格或在副本上工作是明智的。
Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取
演示:使用Kutools for Excel删除字符串中的非英语字符
最佳Office办公效率工具
🤖 | Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数…… |
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入…… | |
高级LOOKUP:多条件VLookup|多值VLookup|多表查找|模糊查找…… | |
高级下拉列表:快速创建下拉列表 |依赖下拉列表 | 多选下拉列表…… | |
列管理器: 添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列…… | |
特色功能:网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)…… | |
15大工具集:12项 文本工具(添加文本、删除特定字符等)|50+种 图表 类型(甘特图等)|40+实用 公式(基于生日计算年龄等)|19项 插入工具(插入二维码、从路径插入图片等)|12项 转换工具(小写金额转大写、汇率转换等)|7项 合并与分割工具(高级合并行、分割单元格等)| …… |
通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……
Office Tab为Office带来多标签界面,让您的工作更加轻松
- 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读。
- 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
- 可提升50%的工作效率,每天为您减少数百次鼠标点击!
所有Kutools加载项,一键安装
Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。





- 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
- 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
- 协同更高效——提升Office应用间的整体工作效率
- 30天全功能试用——无需注册,无需信用卡
- 超高性价比——比单独购买更实惠