克里斯拥有大量包含部件号的单元格。这些单元格可以任意组合包含数字或字符。它们也可以包含特殊字符,例如破折号,斜杠和空格。

克里斯需要一种方法来识别单元格是否仅包含数字,而不考虑特殊字符。因此,包含123-45的单元格将显示为仅包含数字,而123AB-45则不会。

确定给定单元格是否仅包含允许的字符和数字的最简单方法是使用一个公式,该公式删除非数字允许的字符,然后查看结果值是否为数字。以下所有公式都可以很好地解决问题:

=IF(IFERROR(INT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"-", ""),"/", "")," ", "")),FALSE), TRUE, FALSE)

=OR(ISNUMBER(SUBSTITUTE(A1,"-","")+0),ISNUMBER(SUBSTITUTE(A1,"/","")+0),ISNUMBER(SUBSTITUTE(A1," ","")+0))

=ISNUMBER(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," ",""),"/",""),"-","")*1)

您还可以使用一个简单的宏来确定一个单元格是否仅包含数字和允许的字符。尽管可以通过多种方式来访问这种宏,但是这是一个相当简单的方法:

Function DigitsOnly(sRaw As String) As Boolean     Dim X As Integer     Const sAllowed As String = "0123456789 -/"



Application.Volatile     For X = 1 To Len(sRaw)

If InStr(sAllowed, Mid(sRaw, X, 1)) = 0 Then Exit For     Next X     DigitsOnly = False     If X > Len(sRaw) Then DigitsOnly = True End Function

宏检查传递给它的内容,将字符串中的每个字符与允许的字符列表进行比较(以常量sAllowed表示)。

如果检测到不允许的字符,则循环将提前退出并返回False值。因此,如果要评估A1处的单元格,则可以在宏中使用以下内容:

=DigitsOnly(A1)

由于它们返回的是True或False值,因此这些方法(公式或用户定义的函数)中的任何一种都可以与条件格式一起使用,以更改零件号的格式。

注意:

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

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

本技巧(12654)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。