删除所有内容直到一个字符序列(Microsoft Excel)
史蒂文(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的较早菜单界面找到此技巧的版本: