我需要在Excel中进行某种验证方面的一些帮助。我正在使用办公室2013.
用户正在将以下字符串捕获为3 Alpha,3-Numeric,1 Alpha
BFE234G
DFR321F
DFE234F
RED1234
RED123F
我想在VBA或公式中验证,以显示捕获中的所有错误。高于错误(RED1234)
答案 0 :(得分:0)
将此功能添加到vba模块....
Function IsValid(ByVal strVal As String) As Boolean
Dim blnValid As Boolean
If Len(strVal) <> 7 Then
IsValid = False
Exit Function
End If
If IsNumeric(Mid(strVal, 4, 3)) = False Then
IsValid = False
Exit Function
End If
If Left(strVal, 3) Like WorksheetFunction.Rept("[a-zA-Z]", 3) = False Then
IsValid = False
Exit Function
End If
If Right(strVal, 1) Like WorksheetFunction.Rept("[a-zA-Z]", 1) = False Then
IsValid = False
Exit Function
End If
IsValid = True
End Function
然后在单元格中使用函数&#34; = IsValid(B1)&#34;等.....
答案 1 :(得分:0)
使用简单的功能,例如:
Function IsValid(ByVal strVal As String) As Boolean
IsValid = (strVal Like "[a-zA-Z][a-zA-Z][a-zA-Z][0-9][0-9][0-9][a-zA-Z]")
End Function
编辑根据@Slai的评论
Function IsValid(ByVal strVal As String) As Boolean
IsValid = (strVal Like "[a-zA-Z][a-zA-Z][a-zA-Z]###[a-zA-Z]")
End Function
这将允许案例混合。如果您想确保字母为大写,请将[a-zA-Z]
元素更改为[A-Z]
答案 2 :(得分:0)
Excel公式替代,以防用户未启用宏:
=SUMPRODUCT((FIND(MID(A1,ROW(1:8),1),"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")>10)*10^ROW(1:8))=10001110
如果结尾有任何数字,上面将返回TRUE
,并且字符串中找不到任何字符会出现#VALUE!
错误,因此您可以使用数据验证或{{1 }和IFERROR
函数:
LEN