验证3 Alpha-3 Numeric-1Alpha

时间:2017-01-27 09:06:48

标签: excel excel-vba excel-formula vba

我需要在Excel中进行某种验证方面的一些帮助。我正在使用办公室2013.

用户正在将以下字符串捕获为3 Alpha,3-Numeric,1 Alpha

BFE234G
DFR321F
DFE234F
RED1234
RED123F

我想在VBA或公式中验证,以显示捕获中的所有错误。高于错误(RED1234)

3 个答案:

答案 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