4

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

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

是否有 Excel 或 VBA 函数可以告诉我单元格/字符串是否包含数字?

4

3 回答 3

5

把它放到一个模块中,然后在你的工作表中,可能是它旁边的一列,放入公式=HaveNumbers(A2)并检查你是否想要这样(真/假)。您可以改为将其更改为返回字符串。这将返回 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
于 2013-09-19T23:52:07.980 回答
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)放在附近的牢房里。

于 2013-09-20T00:11:12.620 回答
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
于 2013-09-20T00:15:30.963 回答