在Excel中的某种验证方面,我需要一些帮助。我正在使用office 2013。
用户将下面的字符串捕获为3 Alpha,3-数字,1 Alpha
BFE234G
DFR321F
DFE234F
RED1234
RED123F我希望在VBA或公式中验证,以向我展示捕获过程中的所有错误。以上误差(RED1234)
发布于 2017-01-27 10:02:49
将此功能添加到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然后在单元格"=IsValid(B1)“中使用函数等。
发布于 2017-01-27 12:08:27
使用一个简单的函数,例如:
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]
发布于 2017-01-28 16:57:34
Excel公式可供选择,以防用户不启用宏:
=SUMPRODUCT((FIND(MID(A1,ROW(1:8),1),"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")>10)*10^ROW(1:8))=10001110如果结尾有任何数字,上面的代码将返回TRUE,如果字符串中没有找到任何字符,则返回#VALUE!错误,因此您可以通过数据验证或IFERROR和LEN函数来处理该问题:
=(LEN(A1)=7)*IFERROR(SUMPRODUCT((FIND(MID(A1,ROW(1:8),1),
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")>10)*10^ROW(1:8)),)=10001110https://stackoverflow.com/questions/41890257
复制相似问题