Verifique se o texto da célula tem um formato específico

Verifique se o texto da célula tem um formato específico

Estou procurando uma maneira de determinar se o texto inserido em uma célula do Excel segue este formato: "0000/00/00" (0s pode ser qualquer número de um dígito {0,1,2,3,4,5,6, 7,8,9}).

Existe uma maneira de verificar se a célula tem a formatação "0000/00/00"?

Coisas que eu já sei:

  • Que eu possa verificar usando algo da função DATEVALUE() em uma regra de validação de dados para a célula, o problema desse método é que ele não aceitaria 1001/04/07 como data válida.
  • Tentando ver se o texto contém dois caracteres "/" e se seu comprimento é igual a 10 caracteres. alguma fórmula de validação de dados como: "=OR(AND(LEN(A16)=10,(LEN(A16)-LEN(SUBSTITUTE(A16,"/",""))=2),NOT(FALSE)))" , o problema com esta regra de validação é que ela aceitaria entradas como "0550//0014" como válidas.

PS: Estou trabalhando em um ambiente onde não é permitido o uso de macros ou extensões!

Responder1

A seguinte função definida pelo usuário retornaráverdadeirose o argumento tiver o formato adequado, caso contrárioFalso:

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

insira a descrição da imagem aqui

Responder2

Não é a fórmula mais bonita do mundo, mas pode funcionar para você. =SEERRO(SE(CONCATENAR(MID(A1,1,4),MID(A1,6,2),MID(A1,9,2))*1>1,"VERDADEIRO"),"FALSO")

insira a descrição da imagem aqui

Espero que isto ajude

Responder3

Considerando que@AlexMdeu a resposta como um comentário e me pediu para responder minha pergunta usando sua estratégia, aqui está o que fez exatamente o que eu precisava.

Defino a regra de validação de dados para:

=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)

E aqui está o que consegui:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

informação relacionada