Linda的一列包含字母和数字字符。她需要保留数字字符并删除字母字符。例如,一个单元格可能包含10003E111,而她希望以10003111结尾。

有几种方法可以解决此问题。但是,在继续执行任何解决方案之前,您应确保您未尝试更改未真正损坏的内容。例如,您将要确保出现在数字中的“ E”不是数字格式的一部分,换句话说,是幂运算的代号。如果是这样,则您实际上并不想删除该字符,因为它将最终更改基础数字的性质。

如果确定字符不是数字格式的一部分,则可以首先尝试使用公式删除字母字符。如果要更改的值在A列中,则可以在B列中输入以下(很长)公式:

=MID(A1,MATCH(TRUE,ISERROR(1MID(A1,ROW(INDIRECT ("1:"&LEN(A1))),1)),0),-MATCH(TRUE,ISERROR(1MID (A1,ABS(ROW(INDIRECT("1:"&LEN(A1)))-LEN(A1)-1),1))

,0)+LEN(A1)+2-MATCH(TRUE,ISERROR(1*MID(A1,ROW (INDIRECT("1:"&LEN(A1))),1)),0))

确保通过按Ctrl + Shift + Enter将此输入为数组公式。然后在C列中输入以下内容:

=SUBSTITUTE(A1,B1,"")

结果是C列包含A列中的值,不包含字母字符。您可以使用选择性粘贴将信息从C列复制到另一列,以便最终获得实际值而不是公式结果。

这种方法对于短期在单个工作簿上使用可能会非常有用,但是如果您需要更频繁地进行这种数据处理,那么您将需要创建一个用户定义的函数来进行处理。这是一个示例:

Function OnlyNums(sWord As String)

Dim sChar As String     Dim x As Integer     Dim sTemp As String

sTemp = ""

For x = 1 To Len(sWord)

sChar = Mid(sWord, x, 1)

If Asc(sChar) >= 48 And _           Asc(sChar) <= 57 Then             sTemp = sTemp & sChar         End If     Next     OnlyNums = Val(sTemp)

End Function

您可以通过在工作表单元格中调用此函数来使用此函数:

=OnlyNums(A1)

该函数返回一个数值。如果要创建更短的宏来进行处理,请考虑以下事项:

Function StripChar(aText As String)

Dim I As Integer

StripChar = ""

For I = 1 To Len(aText)

aChar = Mid(aText, I, 1)

Select Case aChar             Case "0" To "9"

StripChar = StripChar & aChar         End Select     Next End Function

要使用此功能,请在工作表中使用以下任一方法:

=STRIPCHAR(A1)

=VALUE(STRIPCHAR(A1))

第一个返回由数字组成的文本字符串,第二个返回该字符串的数字版本。

注意:

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

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

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

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

链接:/ excelribbon-Getting_Rid_of_Everything_Except_Numbers [摆脱数字以外的所有事物]。