如何删除单元格内部分内容并保留剩余内容?
当然可以实现!针对你这种删除单元格内特定区间内容、保留剩余部分的需求,Excel里有好几种实用方法,我给你分情况介绍:
方法1:用TEXTAFTER函数(适用于Excel 365/2021及以上版本)
如果你用的是较新的Excel版本,TEXTAFTER函数是最直接的解决方案——它专门用来提取指定分隔符之后的文本内容。
假设你的内容在A1单元格,直接输入公式:
=TEXTAFTER(A1, "Erase ")
这里把"Erase "作为分隔符(注意后面带空格,和你的示例内容匹配),函数会自动返回分隔符之后的所有内容,也就是Store Keep Save。
如果担心内容里的空格或大小写不一致,还可以添加参数忽略大小写,或者允许分隔符不存在时返回原内容:
=TEXTAFTER(A1, "erase ", 1, , TRUE)
最后一个TRUE参数表示忽略大小写匹配。
方法2:用SUBSTITUTE+FIND组合(兼容旧版Excel)
要是你用的是没有TEXTAFTER的旧版本Excel,可以用基础函数组合来实现。同样假设内容在A1单元格,公式如下:
=RIGHT(A1, LEN(A1)-FIND("Erase", A1)-LEN("Erase"))
拆解一下逻辑:
FIND("Erase", A1)找到"Erase"在单元格文本中的起始位置- 加上
LEN("Erase")得到"Erase"这个词的末尾位置 - 用单元格总长度
LEN(A1)减去这个位置,得到剩余内容的长度 - 最后用
RIGHT提取右侧剩余的内容
方法3:VBA宏批量处理(适合大量单元格)
如果要处理成百上千个单元格,手动输入公式太麻烦,写个简单的VBA宏就能批量搞定。
步骤:
- 按下
Alt+F11打开VBA编辑器 - 插入一个新模块,粘贴下面的代码:
Sub RemoveFromStartToErase() Dim cell As Range Dim erasePosition As Integer '遍历选中的所有单元格 For Each cell In Selection '找到"Erase"的位置 erasePosition = InStr(cell.Value, "Erase") If erasePosition > 0 Then '提取"Erase"之后的内容(+5是"Erase"的长度,+1是跳过后面的空格) cell.Value = Mid(cell.Value, erasePosition + 5 + 1) End If Next cell End Sub
- 返回Excel,选中需要处理的单元格,按下
F5运行这个宏,就能自动删除从开头到"Erase"的内容,保留后面的部分。
小提示
- 如果你的内容里"Erase"出现多次,或者大小写不固定,可以在代码里先把文本转成统一大小写再匹配,比如把
InStr(cell.Value, "Erase")改成InStr(UCase(cell.Value), "ERASE")。 - 要是你需要删除的是固定的一段文本(比如示例里的
Trash Recycle Delete Erase),直接用SUBSTITUTE函数更简单:=SUBSTITUTE(A1, "Trash Recycle Delete Erase ", "")
内容的提问来源于stack exchange,提问作者Link




