如何检查Excel电子表格中的单元格是否包含数字

时间:2013-09-19 23:29:14

标签: excel vba excel-vba

我有一列地址,我必须找到那些不包含街道号码的地址。不幸的是,地址已被各种用户输入,并且它们不遵循相同的模式,因此街道类型,街道名称,郊区的顺序不同,我不能使用LEFT,RIGHT或MID等功能来检查特定字符是否是数。该列如下所示:

    10 Willsons Drive, Manhattan
    Epping, 23 Wet Rd
    Longsdale St, Kingsbury
    11 Link Crt, Pakenham

是否有Excel或VBA函数可以告诉我cell / string是否包含数字?

3 个答案:

答案 0 :(得分:5)

将其放入模块中,然后在工作表中,可能是其旁边的列,放置公式=HaveNumbers(A2)并检查是否需要它(True / False)。您可以将其更改为返回字符串。返回TRUE / FALSE。

Function HaveNumbers(oRng As Range) As Boolean
     Dim bHaveNumbers As Boolean, i As Long        
     bHaveNumbers = False
     For i = 1 To Len(oRng.Text)
         If IsNumeric(Mid(oRng.Text, i, 1)) Then
             bHaveNumbers = True
             Exit For
         End If
     Next
     HaveNumbers = bHaveNumbers
End Function

答案 1 :(得分:1)

没有一个VBA功能能够满足您的需求,但以下功能应该可以解决问题:

Public Function ContainsNumbers(Inp As String) As Boolean
    Dim Strings() As String, Str As Variant
    Strings = Split(Inp, " ")
    For Each Str In Strings
        If IsNumeric(Str) Then
            ContainsNumbers = True
            Exit For
        End If
    Next
End Function

然后将=ContainsNumbers(A1)之类的东西放在附近的单元格中。

答案 2 :(得分:0)

谢谢蒙蒂。在我的情况下,数字并不总是与单词分开,所以我不得不迭代每个字符。我使用了以下内容:

Function ContainsNumber(text As String)
 'checks if given cell contains number

For i = 1 To Len(text)
    If IsNumeric(Mid$(text, i, 1)) Then
        ContainsNumber = True
    Exit Function
End If
Next
ContainsNumber = False

End Function