我有一列地址,我必须找到那些不包含街道号码的地址。不幸的是,地址已被各种用户输入,并且它们不遵循相同的模式,因此街道类型,街道名称,郊区的顺序不同,我不能使用LEFT,RIGHT或MID等功能来检查特定字符是否是数。该列如下所示:
10 Willsons Drive, Manhattan
Epping, 23 Wet Rd
Longsdale St, Kingsbury
11 Link Crt, Pakenham
是否有Excel或VBA函数可以告诉我cell / string是否包含数字?
答案 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