史蒂文(Steven)的工作表中包含很多文字。他想在A列的单元格中删除给定字符序列之前可能发生的所有操作,例如= XX =之前的所有操作。每个单元格中可能有多个这些字符的实例,但史蒂文只想在第一次出现之前删除所有内容。

一种方法是使用公式。例如,以下公式将计算单元格A1中的内容,并简单地返回所有内容,直到= XX =字符为止。如果在单元格中找不到字符,则返回整个单元格:

=RIGHT(A1,IF(ISERROR(FIND("=XX=",A1,1)), LEN(A1),LEN(A1)-FIND("=XX=",A1,1)+1))

相反,如果您不想返回第一次出现的= XX =,则只需将公式末尾附近的+1更改为-3。

如果您更喜欢基于宏的解决方案,则可以使用如下所示的例程。它检查当前选中的所有单元格,然后删除= XX =序列之前的所有内容。

Sub DeleteToSequence()

Dim rCell As Range     Dim sSeq As String     Dim x As Long

sSeq = "=XX="

For Each rCell In Selection         x = InStr(rCell.Value, sSeq)

If x > 0 Then             rCell.Value = Mid(rCell, x)

End If     Next

Set rCell = Nothing End Sub

您应该意识到,该宏可能会导致一些错误,尤其是当您搜索的内容以等号开头时(例如= XX =)。

当以等号开头的字符串填充回单元格时,您会得到一个#NAME吗?错误,因为Excel试图解析该单元格,就像它包含一个公式一样。

如果要删除整个字符序列中的所有内容,请在例程中间使用以下行:

rCell.Value = Mid(rCell, x + Len(sSeq))

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(8446)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: