检查单元格文本是否具有特定格式

检查单元格文本是否具有特定格式

我正在寻找一种方法来确定输入到 Excel 单元格中的文本是否遵循以下格式:“0000/00/00”(0 可以是任意一位数字 {0,1,2,3,4,5,6,7,8,9})。

有没有办法检查单元格的格式是否为“0000/00/00”?

我已经知道的事情:

  • 我可以使用单元格数据验证规则中的 DATEVALUE() 函数来检查它,这种方法的问题在于它不接受 1001/04/07 作为有效日期。
  • 尝试查看文本是否包含两个“/”字符并且其长度是否等于 10 个字符。某些数据验证公式如:“=OR(AND(LEN(A16)=10,(LEN(A16)-LEN(SUBSTITUTE(A16,"/",""))=2),NOT(FALSE)))”,此验证规则的问题在于它会接受“0550//0014”之类的条目作为有效条目。

PS:我的工作环境不允许使用宏或扩展!

答案1

以下用户定义函数将返回真的如果参数具有正确的格式,否则错误的

Option Explicit

Public Function FormatCheck(r As Range) As Boolean
    Dim s As String, s2 As String, arr, i As Long

    FormatCheck = False
    s = r(1).Text
    s2 = Replace(s, "/", "")

    If Len(s2) <> 8 Then Exit Function
    arr = Split(s, "/")

    If UBound(arr) <> 2 Then Exit Function
    If Len(arr(0)) <> 4 Then Exit Function
    If Len(arr(1)) <> 2 Then Exit Function
    If Len(arr(2)) <> 2 Then Exit Function

    For i = 1 To 8
        If Not Mid(s2, i, 1) Like "[0-9]" Then Exit Function
    Next i
    FormatCheck = True
End Function

在此处输入图片描述

答案2

这不是世界上最漂亮的公式,但这可能对你有用。=IFERROR(IF(CONCATENATE(MID(A1,1,4),MID(A1,6,2),MID(A1,9,2))*1>1,"TRUE"),"FALSE")

在此处输入图片描述

希望这可以帮助

答案3

考虑到@AlexM已经给出了评论形式的答案,并要求我使用他的策略来回答我的问题,这正是我所需要的。

我将数据验证规则设置为:

=IF(AND(ISNUMBER(VALUE(MID(A1,1,4))),ISNUMBER(VALUE(MID(A1,6,2))),ISNUMBER(VALUE(MID(A1,9,2))),MID(A1,5,1)="/",MID(A1,8,1)="/",LEN(A1)=10),TRUE)

以下是我得到的结果:

在此处输入图片描述

在此处输入图片描述

相关内容