
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
Respuesta2
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: