Compruebe si el texto de la celda tiene un formato específico

Compruebe si el texto de la celda tiene un formato específico

Estoy buscando una manera de determinar si el texto ingresado en una celda de Excel sigue este formato: "0000/00/00" (los 0 pueden ser cualquier número de un dígito {0,1,2,3,4,5,6, 7,8,9}).

¿Hay alguna forma de comprobar si la celda tiene el formato "0000/00/00"?

Cosas que ya sé:

  • Que puedo comprobarlo usando algo de la función DATEVALUE() en una regla de validación de datos para la celda, el problema con este método es que no aceptaría 1001/04/07 como fecha válida.
  • Intentando ver si el texto contiene dos caracteres "/" y que su longitud sea igual a 10 caracteres. alguna fórmula de validación de datos como: "=OR(AND(LEN(A16)=10,(LEN(A16)-LEN(SUBSTITUTE(A16,"/",""))=2),NOT(FALSE)))" , el problema con esta regla de validación es que aceptaría entradas como "0550//0014" como válidas.

PD: ¡Estoy trabajando en un entorno donde no está permitido el uso de macros o extensiones!

Respuesta1

La siguiente función definida por el usuario devolveráVERDADEROsi el argumento tiene el formato adecuado en caso contrarioFALSO:

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

ingrese la descripción de la imagen aquí

Respuesta2

No es la fórmula más bonita del mundo, pero podría funcionar para ti. =SIERROR(SI(CONCATENAR(MEDIO(A1,1,4),MEDIO(A1,6,2),MEDIO(A1,9,2))*1>1,"VERDADERO"),"FALSO")

ingrese la descripción de la imagen aquí

Espero que esto ayude

Respuesta3

Teniendo en cuenta que@AlexMdio la respuesta como un comentario y me pidió que respondiera mi pregunta usando su estrategia, esto es lo que hizo exactamente lo que necesitaba.

Configuré la regla de validación de datos en:

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

Y esto es lo que obtuve:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

información relacionada