Excel:从文本字符串中删除字符、单词、数字
如果你在 Excel 中有一组包含不需要字符、数字或符号的文本字符串,可能需要根据字符的位置或类型删除某些内容。无论是从左侧、右侧或中间裁剪字符,还是去除特定字符和数字,Excel 都提供了多种清理数据的方法。本教程将通过公式、自定义函数(UDF)以及内置功能,逐步演示如何轻松删除文本字符串中的不需要字符、单词和数字。
从文本字符串的左侧、右侧或中间删除字符
在 Excel 工作表中,从文本字符串的左侧、右侧或中间删除部分字符是我们经常会遇到的操作。本节将介绍一些快速简便的方法来帮助你完成这一任务。
1.1 从文本字符串中删除前 n 个字符
如果你需要从一组文本字符串中删除前 n 个字符,可以参考以下方法。
通过公式实现
通常,要删除文本字符串开头的字符,可以使用 REPLACE 函数,或者结合 RIGHT 和 LEN 函数。
REPLACE 函数删除前 N 个字符:
- "string":要从中删除字符的文本字符串;
- "num_chars":你想要删除的字符数。
例如,要从单元格中删除前2 个字符,请使用以下公式,然后拖动填充柄将公式应用到其他单元格,如下图所示:
=REPLACE(A4, 1, 2, "")
RIGHT 和 LEN 函数删除前 N 个字符:
- "string":要从中删除字符的文本字符串;
- "num_chars":你想要删除的字符数。
要从单元格中删除前2 个字符,请应用以下公式:
=RIGHT(A4,LEN(A4)-2)
通过自定义函数实现
你还可以通过创建自定义函数来删除单元格中的前 n 个字符。请按照以下步骤操作:
1. 按下“Alt + F11”组合键,打开“Microsoft Visual Basic for Applications”窗口。
2. 点击“插入”>“模块”,并将以下代码粘贴到模块窗口中。
VBA代码:从文本字符串中删除前 n 个字符
Function removeFirstx(rng As String, cnt As Long)
'Updateby Extendoffice
removeFirstx = Right(rng, Len(rng) - cnt)
End Function
3. 返回工作表,在空白单元格中输入公式“=removefirstx(A4,2)”,然后向下拖动填充柄获取所需结果,如下图所示:
注意:在此公式中,“A4”为要删除字符的单元格;数字“2”表示要从文本字符串开头删除的字符数。
1.2 从文本字符串中删除最后 n 个字符
要从文本字符串的右侧删除指定数量的字符,也可以使用公式或自定义函数。
通过公式实现
要从文本字符串中删除最后 n 个字符,可以结合 LEFT 和 LEN 函数创建公式。
LEFT 和 LEN 函数删除最后 N 个字符:
- "string":要从中删除字符的文本字符串;
- "num_chars":你想要删除的字符数。
要从文本字符串末尾删除3 个字符,请使用此公式,然后拖动填充柄将公式应用到其他单元格,如下图所示:
=LEFT(A4, LEN(A4) - 3)
通过自定义函数实现
自定义函数同样可以帮助你从一组单元格中删除最后 n 个字符。操作步骤如下:
1. 按下“Alt + F11”组合键,打开“Microsoft Visual Basic for Applications”窗口。
2. 点击“插入”>“模块”,并将以下代码粘贴到模块窗口中。
VBA代码:从文本字符串中删除最后 n 个字符
Function removeLastx(rng As String, cnt As Long)
'Updateby Extendoffice
removeLastx = Left(rng, Len(rng) - cnt)
End Function
3. 返回工作表,在空白单元格中输入公式“=removelastx(A4,3)”,然后向下拖动填充柄获取所需结果,如下图所示:
注意:在此公式中,“A4”为要删除字符的单元格;数字“3”表示要从文本字符串末尾删除的字符数。
1.3 利用强大功能删除首尾 n 个字符或指定位置的字符
如果你觉得记忆各种公式太麻烦,想要从文本字符串的左侧、右侧或指定位置删除字符,Kutools for Excel 提供了强大的“删除某位置字符”功能。借助这个小工具,无需记忆任何公式,只需几步点击即可完成操作。
1.选择需要删除字符的单元格,然后点击“Kutools”>“文本”>“删除某位置字符”,如下图所示:
2. 在“删除某位置字符”对话框中,请按如下操作:
2.1 从单元格中删除前 n 个字符:
- 在“数字”文本框中输入要删除的字符数。本例中,将删除前2 个字符。
- 在“位置”部分选择“从左边开始”选项。
- 然后点击“确定”或“应用”按钮,即可得到如下图所示的结果。
2.2 从单元格中删除最后 n 个字符:
- 在“数字”文本框中输入要删除的字符数。本例中,将删除最后3 个字符。
- 在“位置”部分选择“从右边开始”选项。
- 然后点击“确定”或“应用”按钮,即可得到如下图所示的结果。
2.3 从单元格指定位置删除 n 个字符:
如果你需要从文本字符串的某个特定位置删除指定数量的字符,例如,从字符串的第3 个字符开始删除3 个字符。
- 在“数字”文本框中输入要删除的字符数。本例中,将从指定位置删除3 个字符。
- 选择“自定义”选项,并在“位置”部分的文本框中输入要开始删除字符的位置编号。这里将从第3 个字符开始删除。
- 然后点击“确定”或“应用”按钮,即可得到如下图所示的结果。
Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取
1.4 使用公式同时删除文本字符串的首尾 n 个字符
当你需要同时删除 Excel 文本字符串两端的部分字符时,可以结合 MID 和 LEN 函数创建公式来实现。
- "string":要从中删除字符的文本字符串;
- "left_chars":要从左侧删除的字符数;
- "right_chars":要从右侧删除的字符数。
例如,你需要同时删除文本字符串前7 个字符和后5 个字符,请在空白单元格中输入以下公式:
=MID(A4, 7+1, LEN(A4) - (7+5))
注意:在此公式中,“A4”为要删除字符的单元格;数字“7”为要从左侧删除的字符数;数字“5”为要从右侧删除的字符数。
然后向下拖动填充柄应用此公式,即可得到如下图所示的结果:
从文本字符串中删除不需要的/特殊字符
当你将数据从其他地方导入 Excel 时,可能会有许多特殊或不需要的字符被粘贴到工作表中。要删除这些不需要的字符(如 #@$%^&、空格、数字、非数字字符、换行符等),本节将提供一些实用方法帮助你解决。
2.1 从文本字符串中删除部分特殊字符
如果文本字符串中包含如 %^&*() 等特殊字符,可以通过以下三种方法删除这些字符。
使用 SUBSTITUTE 函数从文本字符串中删除多个特殊字符
通常,在 Excel 中可以嵌套多个 SUBSTITUTE 函数,将每个指定字符替换为空,通用语法如下:
- "string_cell":包含要删除特殊字符的文本字符串的单元格;
- "char1, char2, char3":你想要删除的不需要字符。
现在,请将以下公式复制或输入到空白单元格中:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "#", ""), "&", ""), "*", ""), "%", "")
然后向下拖动填充柄,将公式应用到需要的单元格,所有指定的不需要字符会被一次性删除,如下图所示:
提示:如果需要删除更多字符,只需在公式中继续嵌套更多 SUBSTITUTE 函数即可。
通过自定义函数从文本字符串中删除多个特殊字符
上述嵌套 SUBSTITUTE 函数适用于要删除的特殊字符较少的情况。如果需要删除几十个字符,公式会变得很长且难以维护。此时,可以使用下面的自定义函数快速轻松完成任务。
1. 按下“Alt + F11”组合键,打开“Microsoft Visual Basic for Applications”窗口。
2. 点击“插入”>“模块”,并将以下代码粘贴到模块窗口中。
VBA代码:从文本字符串中删除多个特殊字符
Function RemoveUnwantedChars(Str As String, xchars As String)
'Updateby Extendoffice
For Index = 1 To Len(xchars)
Str = Replace(Str, Mid(xchars, Index, 1), "")
Next
RemoveUnwantedChars = Str
End Function
3.关闭代码窗口,返回工作表,在空白单元格中输入公式“=RemoveUnwantedChars(A2, $D$2)”,然后向下拖动填充柄获取所需结果,如下图所示:
注意:在上述公式中,“A2”为要删除字符的单元格,“$D$2”包含你想要删除的特殊字符(可输入任意其他特殊字符)。
利用强大功能从文本字符串中批量删除特殊字符
如果你已安装 Kutools for Excel,使用其“删除特定字符”功能,可以根据需要批量删除各种字符,如数字字符、字母字符、非打印字符等。
1.选择需要删除特殊字符的单元格区域,然后点击“Kutools”>“文本”>“删除特定字符”,如下图所示:
2. 在“删除特定字符”对话框中:
- 在“删除特定字符”部分勾选“自定义”选项。
- 然后在文本框中输入你想要删除的特殊字符。
- 最后点击“确定”或“应用”按钮,即可一次性删除所有指定字符。见截图:
Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取
2.2 从文本字符串中删除所有数字
如果你有一组混合了数字、字母和特殊字符的文本字符串,现在只想删除所有数字并保留其他字符,本节将为你提供几种便捷方法。
使用 SUBSTITUTE 函数从文本字符串中删除数字
在 Excel 中,可以通过嵌套 SUBSTITUTE 函数将所有数字替换为空,因此可以使用以下公式从单元格中删除所有数字:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,1,""),2,""),3,""),4,""),5,""),6,""),7,""),8,""),9,""),0,"")
然后向下拖动填充柄,将公式应用到需要的单元格,所有数字会被从文本字符串中删除,如下图所示:
使用 TEXTJOIN 函数从文本字符串中删除数字
如果你使用的是 Excel2019、2021 或365,新的 TEXTJOIN 函数同样可以帮助你从文本字符串中删除数字。
请将以下公式复制到空白单元格中,然后同时按下 Ctrl + Shift + Enter 键获取第一个结果:
=TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))
然后将公式复制到下方其他需要应用的单元格,如下图所示:
注意:TEXTJOIN仅适用于 Excel2019、2021 和 Office365。
通过自定义函数从文本字符串中删除数字
除了上述两种公式,还可以通过自定义函数实现,请按以下步骤操作:
1. 按下“Alt + F11”组合键,打开“Microsoft Visual Basic for Applications”窗口。
2. 点击“插入”>“模块”,并将以下代码粘贴到模块窗口中。
VBA代码:从文本字符串中删除数字
Function RemoveNumbers(Txt As String) As String
'Updateby Extendoffice
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "[0-9]"
RemoveNumbers = .Replace(Txt, "")
End With
End Function
3.关闭并退出代码窗口,返回工作表,在空白单元格中输入公式“=RemoveNumbers(A2)”,然后向下拖动填充柄应用到需要的单元格,如下图所示:
利用便捷选项从文本字符串中删除数字
如果你觉得公式太复杂,不妨试试 Kutools for Excel 的“删除特定字符”工具。通过这个便捷功能,只需几次点击即可完成操作。
1.选择需要删除数字的单元格区域,然后点击“Kutools”>“文本”>“删除特定字符”。
2. 在“删除特定字符”对话框中,请按如下操作:
- 在“删除特定字符”部分勾选“数字字符”选项。
- 然后点击“确定”或“应用”按钮,数字会被立即删除。见截图:
Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取
2.3 从文本字符串中删除非数字字符
如果你想从文本字符串中删除所有非数字字符,仅保留数字,本节将介绍几种在 Excel 中实现的方法。
在 Excel2016及更早版本中使用公式从文本字符串中删除非数字字符
如果你使用的是 Excel2016 或更早版本,需要应用较为复杂的公式来实现,请将以下公式复制或输入到空白单元格中:
=SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)) * ROW(INDIRECT("1:"&LEN(A2))), 0), ROW(INDIRECT("1:"&LEN(A2))))+1, 1) * 10^ROW(INDIRECT("1:"&LEN(A2)))/10)
然后将公式复制到下方其他需要应用的单元格,如下图所示:
注意:如果文本字符串中的数字以0 开头,0 会被省略。
在 Excel2019、2021、365 中使用 TEXTJOIN 函数从文本字符串中删除非数字字符
上述公式对大多数用户来说可能较难理解。如果你使用的是 Excel2019、2021 或365,可以使用更简洁的公式。
请将以下公式复制或输入到空白单元格中,并同时按下“Ctrl + Shift + Enter”键获取第一个正确结果:
=TEXTJOIN("",TRUE,IFERROR(MID(A2,ROW(INDIRECT("1:100")),1)+0,""))
然后向下拖动填充柄应用到需要的单元格,即可得到如下图所示的结果:
注意:使用此公式时,前导0 会被保留,因为返回的是文本格式的数字。
通过自定义函数从文本字符串中删除非数字字符
当然,你也可以通过自定义函数实现更简洁的语法,操作如下:
1. 按下“Alt + F11”组合键,打开“Microsoft Visual Basic for Applications”窗口。
2. 点击“插入”>“模块”,并将以下代码粘贴到模块窗口中。
VBA代码:从文本字符串中删除非数字字符
Function Removenonnumeric(str As String) As String
'Updateby Extendoffice
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "[^0-9]"
Removenonnumeric = .Replace(str, "")
End With
End Function
3.关闭并退出代码窗口,返回工作表,在空白单元格中输入公式“=Removenonnumeric(A2)”,然后向下拖动填充柄应用到需要的单元格,仅数字会被提取出来,如下图所示:
利用简单功能从文本字符串中删除非数字字符
要直接批量删除区域内的非数字字符,Kutools for Excel 的“删除特定字符”工具可以让你几步完成。
1.选择需要删除非数字字符的单元格区域,然后点击“Kutools”>“文本”>“删除特定字符”。
2. 在“删除特定字符”对话框中,请按如下操作:
- 在“删除特定字符”部分勾选“非数字字符”选项。
- 然后点击“确定”或“应用”按钮,所有非数字字符会被立即删除。见截图:
Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取
2.4 将一个单元格中的文本和数字分列
有时你可能希望将文本字符串中的文本和数字分别提取到两个独立的列中,借助以下方法可以快速轻松完成。
通过自定义函数将一个单元格中的文本和数字分列
使用以下自定义函数,可以一次性提取文本和数字,请按以下步骤操作:
1. 按下“Alt + F11”组合键,打开“Microsoft Visual Basic for Applications”窗口。
2. 点击“插入”>“模块”,并将以下代码粘贴到模块窗口中。
VBA代码:将文本字符串中的文本和数字分列
Function SplitText(pWorkRng As Range, pIsNumber As Boolean) As String
'Updateby Extendoffice
Dim xLen As Long
Dim xStr As String
xLen = VBA.Len(pWorkRng.Value)
For i = 1 To xLen
xStr = VBA.Mid(pWorkRng.Value, i, 1)
If ((VBA.IsNumeric(xStr) And pIsNumber) Or (Not (VBA.IsNumeric(xStr)) And Not (pIsNumber))) Then
SplitText = SplitText + xStr
End If
Next
End Function
3.关闭并退出代码窗口,返回工作表,在空白单元格中输入公式“=SplitText(A2,FALSE)”,然后向下拖动填充柄应用到需要的单元格,即可提取所有文本,如下图所示:
4. 然后,在另一个单元格中输入公式“=SplitText(A2,TRUE)”,并向下拖动填充柄应用到需要的单元格,即可提取所有数字,如下图所示:
利用便捷功能将一个单元格中的文本和数字分列
如果你安装了 Kutools for Excel,其“分割单元格”工具可以根据分隔符、指定宽度或文本与数字将单元格拆分为多列或多行。
1.选择需要拆分的单元格区域,然后点击“Kutools”>“合并与分割”>“分割单元格”,如下图所示:
2. 在“分割单元格”对话框中,在“类型”部分选择“数据分栏”选项,然后在“分隔依据”部分勾选“拆分为文本和数字”,如下图所示:
3. 点击“确定”按钮后,会弹出另一个“分割单元格”对话框,选择一个单元格作为输出文本和数字的位置,然后点击“确定”按钮。现在你可以看到所选单元格中的文本和数字已被一次性分为两列,如下演示所示:
Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取
2.5 从文本字符串中删除换行符
换行符可以让你在 Excel 的同一个单元格中显示多行内容。有时从网站复制数据或手动用“Alt + Enter”分行时,会出现换行符或回车符。某些情况下,你可能希望删除换行符,使单元格内容显示为一行,如下图所示。这里将介绍几种在 Excel 中实现的方法。
使用查找和替换功能从文本字符串中删除换行符
在 Excel 中,可以使用“查找和替换”功能删除换行符,操作如下:
1.选择需要删除换行符的数据区域。
2. 点击“开始”>“查找与选择”>“替换”(或按“Ctrl + H”),进入“查找和替换”对话框,如下图所示:
3. 在弹出的“查找和替换”对话框中,请按如下操作:
- 将光标放在“查找内容”字段,并按下键盘上的“Ctrl + J”,你可能看不到任何内容,但换行符已被插入。
- 在“替换为”字段中,留空即可直接删除换行符,或按一次空格键将换行符替换为空格。
4. 点击“全部替换”按钮,所选单元格中的所有换行符会被一次性删除或替换为空格。见截图:
使用 SUBSTITUTE 函数从文本字符串中删除换行符
你还可以结合 SUBSTITUTE 和 CHAR 函数创建公式,删除文本字符串中的换行符。
请应用以下公式获取结果:
=SUBSTITUTE(A2,CHAR(10),"")
提示:SUBSTITUTE 函数会查找并替换 CHAR(10)(即换行符)为空。如果你想用逗号加空格分隔结果,可以使用以下公式:
=SUBSTITUTE(A2,CHAR(10),", ")
使用 VBA代码从文本字符串中删除换行符
如果你熟悉 VBA代码,也可以使用以下代码,请按如下步骤操作:
1. 按下“Alt + F11”组合键,打开“Microsoft Visual Basic for Applications”窗口。
2. 点击“插入”>“模块”,并将以下代码粘贴到模块窗口中。
VBA代码:从文本字符串中删除换行符
Sub RemoveCarriage()
'Updateby Extendoffice
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
Rng.Value = Replace(Rng.Value, Chr(10), "")
Next
End Sub
3. 按下“F5”键运行代码,会弹出提示框。选择需要删除换行符的区域,如下图所示:
4. 点击“确定”按钮,所选数据区域中的所有换行符会被删除。
利用智能选项从文本字符串中删除换行符
这里,Kutools for Excel 的“删除特定字符”功能同样可以轻松删除换行符。
1.选择需要删除换行符的单元格区域,然后点击“Kutools”>“文本”>“删除特定字符”。
2. 在“删除特定字符”对话框中,请按如下操作:
- 在“删除特定字符”部分勾选“非打印字符”选项。
- 然后点击“确定”或“应用”按钮,即可从所选数据区域删除所有换行符。见截图:
Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取
2.6 从文本字符串中删除空格(前导、尾部、多余或所有空格)
将文本从外部来源复制粘贴到 Excel 工作表时,常常会带来一些多余的空格,手动删除前导、尾部或其他多余空格会很繁琐。幸运的是,Excel 提供了一些简便方法来处理这个问题。
使用 TRIM 函数从文本字符串中删除多余空格(前导、尾部、多余)
在 Excel 中,使用简单的 TRIM 函数可以删除文本字符串中的前导、尾部和多余空格。该函数会保留单词之间的单个空格,删除其他所有空格。
请在空白单元格中输入以下公式:
=TRIM(A2)
然后向下拖动填充柄,将公式复制到其他单元格,现在你可以看到所有前导、尾部和单词间多余空格已被一次性删除,如下图所示:
从文本字符串中删除所有空格
如果你想删除文本字符串中的所有空格,可以使用 SUBSTITUTE 函数或查找和替换功能。
通过 SUBSTITUTE 函数实现
可以使用 SUBSTITUTE 函数将所有空格替换为空,请在空白单元格中输入以下公式:
=SUBSTITUTE(A2," ","")
然后向下拖动填充柄,将公式复制到需要的单元格,所有空格会被删除,如下图所示:
通过查找和替换功能实现
实际上,Excel 的“查找与替换”功能同样可以帮助你去除所选单元格中的所有空格,请按以下步骤操作:
1.选择需要删除所有空格的数据区域。
2. 点击“开始”>“查找与选择”>“替换”(或按“Ctrl + H”),在弹出的“查找和替换”对话框中,按如下操作:
- 在“查找内容”字段中按下空格键;
- 在“替换为”字段中留空。
3. 然后点击“全部替换”按钮,所选单元格中的所有空格会被一次性删除。见截图:
利用强大功能从文本字符串中删除各种空格
Kutools for Excel 提供了强大的“删除空格”功能,借助此工具,你不仅可以删除前导空格、尾部空格、多余空格,还能一次性删除所选区域的所有空格,大大提升工作效率。
1.选择需要删除空格的数据区域,然后点击“Kutools”>“文本”>“删除空格”。见截图:
2. 在“删除空格”对话框中,从“空格类型”中选择你要删除的空格类型:
- 删除前导空格,请选择“前面的空格”选项;
- 删除尾部空格,请选择“后面的空格”选项;
- 同时删除前导和尾部空格,请选择“前后空格”选项;
- 删除所有多余空格,请选择“所有多余的空格”选项;
- 删除所有空格,请选择“所有的空格”选项。
3. 然后点击“确定”或“应用”按钮,即可得到所需结果。
Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取
删除特定字符前后的字符/文本
本节将介绍如何删除第一个、最后一个或第 N 次出现的特定字符前后内容的操作方法。
3.1 删除第一个特定字符前或后的文本
如果你想删除第一个特定字符(如空格、逗号)前或后的文本,如下图所示,下面介绍两种方法。
使用公式删除第一个特定字符前的文本
要删除第一个特定字符前的文本,可以结合 RIGHT、LEN 和 FIND 函数创建公式,通用语法如下:
- "cell":要删除文本的单元格引用或文本字符串;
- "char":你想要根据其删除文本的特定分隔符。
例如,要删除列表字符串中第一个逗号前的所有内容,请在空白单元格中输入以下公式,然后向下拖动应用到需要的单元格,如下图所示:
=RIGHT(A2,LEN(A2)-FIND(",",A2))
注意:在上述公式中,“A2”为要删除文本的单元格,“,”为你想要根据其删除文本的特定字符,你可以根据需要更换为其他字符。
使用公式删除第一个特定字符后的文本
要删除第一个特定字符后的所有内容,可以结合 LEFT 和 FIND 函数实现,通用语法如下:
- "cell":要删除文本的单元格引用或文本字符串;
- "char":你想要根据其删除文本的特定分隔符。
请在空白单元格中输入以下公式,然后向下拖动填充柄应用到需要的单元格,所有第一个逗号后的字符会被一次性删除,如下图所示:
=LEFT(A2,FIND(",",A2)-1)
3.2 删除第 N 次出现的字符前或后的文本
有时,文本字符串中包含多个相同分隔符,你可能希望删除第2、3 或第4 次出现的分隔符前或后的所有内容。可以参考以下方法:
使用公式删除第 N 次出现的字符前的文本
要删除第 N 次出现的特定字符前的文本,可以使用以下公式,通用语法如下:
- "cell":要删除文本的单元格引用或文本字符串;
- "char":你想要根据其删除文本的特定分隔符;
- "N":要删除文本的字符出现次数。
例如,要删除文本字符串中第二个逗号前的所有内容,请使用以下公式:
=RIGHT(A2,LEN(A2)-FIND("#",SUBSTITUTE(A2,",","#",2)))
注意:在上述公式中,“A2”为要删除文本的单元格,“,”为你想要根据其删除文本的特定字符,你可以根据需要更换为其他字符;“2”表示要删除第几个逗号前的内容。
然后向下拖动填充柄,将公式应用到其他单元格,如下图所示:
使用公式删除第 N 次出现的字符后的文本
要删除第 N 次出现的特定分隔符后的内容,可以结合 LEFT、SUBSTITUTE 和 FIND 函数实现,通用语法如下:
- "cell":要删除文本的单元格引用或文本字符串;
- "char":你想要根据其删除文本的特定分隔符;
- "N":要删除文本的字符出现次数。
了解基本语法后,请将以下公式复制或输入到空白单元格中:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
注意:在上述公式中,“A2”为要删除文本的单元格,“,”为你想要根据其删除文本的特定字符,你可以根据需要更换为其他字符;“2”表示要删除第几个逗号后的内容。
然后向下拖动填充柄,将公式应用到其他单元格,所有第二个逗号后的字符会被一次性删除,如下图所示:
通过自定义函数删除第 N 次出现的字符前或后的文本
如你所见,通过不同组合的 Excel 原生函数可以解决删除第 N 次出现的字符前后内容的情况。问题在于需要记忆这些复杂公式。此时,可以创建一个自定义函数来覆盖所有场景,操作如下:
1. 按下“Alt + F11”组合键,打开“Microsoft Visual Basic for Applications”窗口。
2. 点击“插入”>“模块”,并将以下代码粘贴到模块窗口中。
VBA代码:删除第 N 次出现的字符前或后的文本
Function RemoveTextOccurrence(Str As String, Delimiter As String, Occurrence As Integer, IsAfter As Boolean)
Dim xStr As String
Dim xStrLen, xF, xIntStart As Integer
xStr = Str
xStrLen = Len(xStr)
xIntStart = 1
For xF = 1 To Occurrence
xIntStart = InStr(xIntStart + 1, xStr, Delimiter, vbTextCompare)
If (xIntStart = 0) Or (xIntStart < 0) Then
If IsAfter Then
RemoveTextOccurrence = xStr
Else
RemoveTextOccurrence = ""
End If
Exit Function
End If
Next
If IsAfter Then
RemoveTextOccurrence = Mid(Str, 1, xIntStart - 1)
Else
RemoveTextOccurrence = Mid(Str, xIntStart + 1)
End If
End Function
3.关闭并退出代码窗口,返回工作表,使用以下公式:
删除第二个逗号前的文本:
=RemoveTextOccurrence(A2, ", ", 2, FALSE)
删除第二个逗号后的文本
=RemoveTextOccurrence(A2, ", ", 2, TRUE)
3.3 删除最后一次出现的字符前或后的文本
如果你需要删除最后一个特定字符前或后的所有内容,仅保留其前后的子字符串,本节将提供相应公式解决该问题。
使用公式删除最后一次出现的字符前的文本
要删除最后一次出现的字符前的所有内容,通用语法如下:
- "cell":要删除文本的单元格引用或文本字符串;
- "char":你想要根据其删除文本的特定分隔符;
如果你需要删除最后一个逗号前的所有内容,请将以下公式复制或输入到空白单元格中:
=RIGHT(A2,LEN(A2)-SEARCH("#",SUBSTITUTE(A2,",","#",LEN(A2)-LEN(SUBSTITUTE(A2,",","")))))
注意:在上述公式中,“A2”为要删除文本的单元格,“,”为你想要根据其删除文本的特定字符,你可以根据需要更换为其他字符。
然后向下拖动填充柄,将公式应用到其他单元格,所有最后一个逗号前的字符会被一次性删除,如下图所示:
使用公式删除最后一次出现的字符后的文本
如果单元格值被不定数量的分隔符分隔,想要删除最后一个分隔符后的所有内容,通用语法如下:
- "cell":要删除文本的单元格引用或文本字符串;
- "char":你想要根据其删除文本的特定分隔符;
请将以下公式复制或输入到空白单元格中,然后向下拖动填充柄获取其他结果,如下图所示:
=LEFT(A2,FIND("#",SUBSTITUTE(A2,",>","#",LEN(A2)-LEN(SUBSTITUTE(A2,",",""))))-1)
“注意”:在上述公式中,“A2”为要删除文本的单元格,“,”为你想要根据其删除文本的特定字符,你可以根据需要更换为其他字符。
3.4 删除括号中的文本
如果你有一组文本字符串,其中部分字符被括号括起来,现在你可能希望删除括号内的所有字符(包括括号本身),如下图所示。本节将介绍几种在 Excel 中实现的方法。
使用查找和替换功能删除括号中的文本
在 Excel 中,内置的查找和替换功能可以帮助你查找所有括号内的文本并将其替换为空。操作如下:
1.选择需要删除括号内文本的数据列表。
2. 点击“开始”>“查找与选择”>“替换”(或按“Ctrl + H”),进入查找和替换对话框,在对话框中按如下操作:
- 在“查找内容”字段中输入“(*)”;
- 在“替换为”字段中留空。
3. 点击“全部替换”按钮,所选单元格中所有括号内(包括括号本身)的字符会被一次性删除。见截图:
提示:查找和替换功能同样适用于文本字符串中有两对或更多括号的情况。
使用公式删除括号中的文本
除了查找和替换功能外,还可以使用公式解决此问题,通用语法如下:
- "text":要从中删除字符的文本字符串或单元格引用。
请将以下公式复制或输入到空白单元格中获取结果:
=SUBSTITUTE(A2,MID(LEFT(A2,FIND(")",A2)),FIND("(",A2),LEN(A2)),"")
然后向下拖动填充柄,将公式应用到需要的单元格,所有括号内(包括括号本身)的文本会被一次性删除,如下图所示:
提示:如果单元格值中没有括号,应用上述公式后会显示错误。为忽略错误,请使用以下公式:
=IFERROR(SUBSTITUTE(A2,MID(LEFT(A2,FIND(")",A2)),FIND("(",A2),LEN(A2)),""),A2)
通过自定义函数删除括号中的文本
上述公式适用于删除一对括号内的文本。如果需要删除文本字符串中多对括号内的内容,公式可能无法正确处理。此时,可以创建一个简单的自定义函数来解决。
1. 按下“Alt + F11”组合键,打开“Microsoft Visual Basic for Applications”窗口。
2. 点击“插入”>“模块”,并将以下代码粘贴到模块窗口中。
VBA代码:删除括号中的文本
Function remtxt(ByVal str As String) As String
'Updateby Extendoffice
While InStr(str, "(") > 0 And InStr(str, ")") > InStr(str, "(")
str = Left(str, InStr(str, "(") - 1) & Mid(str, InStr(str, ")") + 1)
Wend
remtxt = Trim(str)
End Function
3. 返回工作表,在空白单元格中输入公式“=remtxt(A2)”,然后向下拖动填充柄应用公式,所有括号内(包括括号本身)的文本会被删除,如下图所示:
从文本字符串中删除单词
某些情况下,你可能希望从一组单元格中删除部分单词,如第一个或最后一个单词、重复单词等。针对这些需求,本节将介绍几种方法。
4.1 删除文本字符串中的第一个或最后一个单词
要从一组文本字符串中删除第一个或最后一个单词,可以参考以下公式。
使用公式删除文本字符串中的第一个单词
要删除一组文本字符串中的第一个单词,可以结合 RIGHT、LEN 和 FIND 函数创建简单公式,通用语法如下:
- "text":要删除第一个单词的文本字符串或单元格引用。
请将以下公式输入或复制到空白单元格中:
=RIGHT(A2,LEN(A2)-FIND(" ",A2))
然后向下拖动填充柄,将公式应用到其他单元格,如下图所示:
提示:如果需要删除单元格中的前 N 个单词,请使用以下公式:
- "text":要删除前 n 个单词的文本字符串或单元格引用;
- "N":表示要从文本字符串开头删除的单词数。
例如,要删除单元格中的前两个单词,请将以下公式复制或输入到空白单元格中获取所需结果,如下图所示:
=MID(TRIM(A2),1+FIND("~",SUBSTITUTE(TRIM(A2)," ","~",2)),255)
使用公式删除文本字符串中的最后一个单词
要删除文本字符串中的最后一个单词,也可以使用公式实现,通用语法如下:
- "text":要删除最后一个单词的文本字符串或单元格引用;
请将以下公式输入到空白单元格中,然后向下拖动填充柄应用到其他单元格,如下图所示:
=LEFT(TRIM(A2),FIND("~",SUBSTITUTE(A2," ","~",LEN(TRIM(A2))-LEN(SUBSTITUTE(TRIM(A2)," ",""))))-1)
提示:要从一组单元格中删除最后 N 个单词,通用语法如下:
- "text":要删除最后 n 个单词的文本字符串或单元格引用;
- "N":表示要从文本字符串末尾删除的单词数。
假设要从一组单元格中删除最后3 个单词,请使用以下公式获取结果,如下图所示:
=LEFT(A2,FIND("~",SUBSTITUTE(A2," ","~",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-(3-1))))
4.2 删除单元格内重复的字符或单词
在删除重复值或行时,Excel 提供了多种选项,但对于删除单元格内的重复字符或单词,内置功能并不完善。本节将帮助你通过自定义函数解决这一难题。
通过自定义函数删除单元格内重复的字符
如果单元格中有多个相同字符,需要删除重复字符并仅保留首次出现的字符,如下图所示,可以使用以下自定义函数。
1. 按下“Alt + F11”组合键,打开“Microsoft Visual Basic for Applications”窗口。
2. 点击“插入”>“模块”,并将以下代码粘贴到模块窗口中。
VBA代码:删除单元格内重复字符
Function RemoveDupeschars(pWorkRng As Range) As String
'Updateby Extendoffice
Dim xValue As String
Dim xChar As String
Dim xOutValue As String
Set xDic = CreateObject("Scripting.Dictionary")
xValue = pWorkRng.Value
For i = 1 To VBA.Len(xValue)
xChar = VBA.Mid(xValue, i, 1)
If xDic.Exists(xChar) Then
Else
xDic(xChar) = ""
xOutValue = xOutValue & xChar
End If
Next
RemoveDupeschars = xOutValue
End Function
3.关闭代码窗口,返回工作表,在数据旁边的空白单元格中输入公式“=RemoveDupeschars(A2)”,然后向右拖动填充柄应用到需要的单元格,如下图所示:
注意:“A2”为要删除重复字符的数据单元格。
提示:该函数区分大小写,会将大写和小写字母视为不同字符。
通过自定义函数删除单元格内重复的单词
假设你有单元格中出现多次相同单词或文本字符串,想要删除所有重复单词,如下图所示。可以使用以下自定义函数在 Excel 中实现。
1. 按下“Alt + F11”组合键,打开“Microsoft Visual Basic for Applications”窗口。
2. 点击“插入”>“模块”,并将以下代码粘贴到模块窗口中。
VBA代码:删除单元格内重复单词
Function RemoveDupeswords(txt As String, Optional delim As String = " ") As String
'Updateby Extendoffice
Dim x
With CreateObject("Scripting.Dictionary")
.CompareMode = vbTextCompare
For Each x In Split(txt, delim)
If Trim(x) <> "" And Not .exists(Trim(x)) Then .Add Trim(x), Nothing
Next
If .Count > 0 Then RemoveDupeswords = Join(.keys, delim)
End With
End Function
3.关闭代码窗口,返回工作表,在数据旁边的空白单元格中输入公式“=RemoveDupeswords(A2,", ")”,然后向右拖动填充柄应用到需要的单元格,如下图所示:
注意:“A2”为要删除重复单词的单元格,逗号和空格(",")为分隔符,你可以根据需要更换为其他分隔符。
提示:该函数不区分大小写,大写和小写字母视为相同字符。
4.3 将文本字符串裁剪为 N 个单词
如果单元格中有较长的文本字符串,有时你可能只想保留前 n 个单词,裁剪掉其余内容。本节将介绍几种在 Excel 中实现的方法。
使用公式将文本字符串裁剪为 N 个单词
要将文本字符串裁剪为 N 个单词,可以结合 LEFT、FIND 和 SUBSTITUTE 函数创建公式,通用语法如下:
- "text":要裁剪的文本字符串或单元格引用;
- "N":要从左侧保留的单词数。
请将以下公式复制或输入到空白单元格中:
=LEFT(A2,FIND("~",SUBSTITUTE(A2," ","~",B2))-1)
然后向下拖动填充柄,将公式应用到其他单元格,如下图所示:
通过自定义函数将文本字符串裁剪为 N 个单词
除了上述公式外,还可以通过自定义函数实现,操作如下:
1. 按下“Alt + F11”组合键,打开“Microsoft Visual Basic for Applications”窗口。
2. 点击“插入”>“模块”,并将以下代码粘贴到模块窗口中。
VBA代码:将文本字符串裁剪为 N 个单词
Function GetNWords(StrWords As String, Num_of_Words As Integer) As String
'Updateby Extendoffice
Dim xArr
Dim xRes As String
Dim xF As Integer
xStr = StrWords
If (Num_of_Words < 1) Then
GetNWords = ""
Exit Function
End If
xArr = Split(xStr, " ")
xRes = ""
On Error Resume Next
For xF = 0 To UBound(xArr)
If Trim(xArr(xF)) <> "" Then
Num_of_Words = Num_of_Words - 1
If xRes = "" Then
xRes = Trim(xArr(xF))
Else
xRes = xRes & " " & Trim(xArr(xF))
End If
End If
If Num_of_Words = 0 Then Exit For
Next
If Num_of_Words = 0 Then
GetNWords = xRes & "..."
Else
GetNWords = xRes & "..."
End If
End Function
3.关闭并退出代码窗口,返回工作表,在空白单元格中输入公式“=GetNWords(A2,B2)”,然后向下拖动填充柄应用到其他单元格,仅保留前指定数量的单词,如下图所示:
最佳办公效率工具
🤖 | 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%,每天为您减少数百次鼠标点击!