Excel 验证字符串项
我需要在Excel中验证社会保险号(SSN)。我不知道从哪里开始,我在网上到处找,但是没有用。。。如果可以的话,请帮忙。谢谢 以下是验证规则:Excel 验证字符串项,excel,vba,regexp,Excel,Vba,Regexp,我需要在Excel中验证社会保险号(SSN)。我不知道从哪里开始,我在网上到处找,但是没有用。。。如果可以的话,请帮忙。谢谢 以下是验证规则: 字段长度始终为9个数字 不能都是相同的数字(例如,222-22-2222) 不能包含从1到9或9到1(即123-45-6789,9876-54-321) 不能包含数字以外的数据(0-9) 以666,000开头的受限号码 不能将9作为第一个数字` 最后四位数字不能是零(0000) 这不是一个完整的答案。 但是,它将为您提供一个可以扩展以满足更多条件的模板
- 字段长度始终为9个数字
- 不能都是相同的数字(例如,
)222-22-2222
- 不能包含从
或1到9
(即9到1
,123-45-6789
)9876-54-321
- 不能包含数字以外的数据(
)0-9
- 以
,666
开头的受限号码000
- 不能将9作为第一个数字`
- 最后四位数字不能是零
(0000)
这不是一个完整的答案。
公共函数SSNCheck(作为字符串)作为字符串
我想我会坚持多久
SSNCheck=“坏”
如果Len(s)11,则退出功能
ary=拆分(s,“-”)
如果UBound(ary)2,则退出函数
对于i=0到2
如果不是数字(ary(i)),则退出函数
接下来我
如果Len(ary(0))3,则退出函数
如果Len(ary(1))2,则退出函数
如果Len(ary(2))4,则退出函数
如果ary(2)=“0000”,则退出函数
如果ary(0)&ary(1)&ary(2)=“123456789”,则退出函数
SSNCheck=“好”
端函数
用户定义函数(UDF)非常易于安装和使用:
Sub-OCD\u Kid()开始复制并粘贴代码
- 如果
有A1
070-22-2794
- 在
中输入=B1
以测试OCD\u Kid(A1)
A1
到目前为止你得到了什么?请参阅Excel中的以下函数:if(用于检查条件),and(用于多个条件,len(用于检查SSN的长度),left和right(用于获取SSN中的特定字符),isnumeric(是一个数字)
Public Function SSNCheck(s As String) As String
Dim i As Long
SSNCheck = "Bad"
If Len(s) <> 11 Then Exit Function
ary = Split(s, "-")
If UBound(ary) <> 2 Then Exit Function
For i = 0 To 2
If Not IsNumeric(ary(i)) Then Exit Function
Next i
If Len(ary(0)) <> 3 Then Exit Function
If Len(ary(1)) <> 2 Then Exit Function
If Len(ary(2)) <> 4 Then Exit Function
If ary(2) = "0000" Then Exit Function
If ary(0) & ary(1) & ary(2) = "123456789" Then Exit Function
SSNCheck = "Good"
End Function
Function OCD_Kid(strIn As String) As Boolean
Dim objRegex As Object
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Global = True
.Pattern = "^(?!\b(\d)\1+-(\d)\1+-(\d)\1+\b)(?!123-45-6789)(?!666|000|9\d{2})\d{3}-\d{2}-(?!0{4})\d{4}$"
OCD_Kid = .test(strIn)
End With
End Function
Sub Tested()
Debug.Print OCD_Kid("222-22-2222") ' Invalid
Debug.Print OCD_Kid("070-22-2794") ' Valid
Debug.Print OCD_Kid("823-45-6789") ' Valid
Debug.Print OCD_Kid("123-45-6789") ' Invalid
Debug.Print OCD_Kid("123-45-5789") ' Valid
End Sub