Bryan的工作表中有很多单元格,其中包含一些字母字符。他正在寻找一种方法来消除那些字母字符,无论它们出现在单元格中的什么位置。例如,如果单元格包含“ ABC123”,则布莱恩希望摆脱“ ABC”

并且仅剩“ 123”。同样,“ A3B2C1”应变为“ 321”

“#45P%”应变为“#45%”。

解决此问题的唯一方法是使用宏。如果只想就地去除字符,则可以通过选择要影响的单元格,然后运行一个宏来检查每个单元格并删除有问题的字符来实现。您可以通过多种方式执行此操作;下面的宏是一种简单的方法。

Sub CleanText1()

Dim rngCell As Range     Dim intChar As Integer     Dim strCheckString As String     Dim strCheckChar As String     Dim intCheckChar As Integer     Dim strClean As String

For Each rngCell In Selection         strCheckString = rngCell.Value         strClean = ""



For intChar = 1 To Len(strCheckString)

strCheckChar = Mid(strCheckString, intChar, 1)

intCheckChar = Asc(strCheckChar)

Select Case intCheckChar                 Case 65 To 90      'upper case chars                     'Do nothing                 Case 97 To 122     'lower case chars                     'Do nothing                 Case 128 To 151    'special language chars                     'Do nothing                 Case 153 To 154    'special language chars                     'Do nothing                 Case 159 To 165    'special language chars                     'Do nothing                 Case Else                     strClean = strClean & strCheckChar             End Select         Next intChar         rngCell.Value = strClean     Next rngCell End Sub

这种剥离字符的方法的好处是,您可以通过简单地修改“选择大小写”结构中被检查的内容(以及采取的措施)来轻松摆脱其他字符。

如果您不想修改原始单元格,则一种好的方法是将一个用户定义的函数放在一起,该函数将返回字符串的“干净”版本。这可以通过对先前的宏进行一些修改来实现。

Function CleanText2(ByVal sRaw As String) As String     Dim intChar As Integer     Dim strCheckString As String     Dim strCheckChar As String     Dim intCheckChar As Integer     Dim strClean As String

Application.Volatile     strClean = ""

For intChar = 1 To Len(sRaw)

strCheckChar = Mid(sRaw, intChar, 1)

intCheckChar = Asc(strCheckChar)

Select Case intCheckChar             Case 65 To 90      'upper case chars                 'Do nothing             Case 97 To 122     'lower case chars                 'Do nothing             Case 128 To 151    'special language chars                 'Do nothing             Case 153 To 154    'special language chars                 'Do nothing             Case 159 To 165    'special language chars                 'Do nothing             Case Else                 strClean = strClean & strCheckChar         End Select     Next intChar     CleanText2 = strClean End Function

为了使用该功能,可以在单元格中输入以下公式:

=CleanText2(A1)

结果是该公式返回单元格A1中任何内容的“纯净”版本,而不会干扰单元格A1中的内容。

注意:

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

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

本技巧(3219)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: