摆脱数字以外的所有事物(Microsoft Excel)
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 [摆脱数字以外的所有事物]。