Проверьте, имеет ли текст ячейки определенный формат

Проверьте, имеет ли текст ячейки определенный формат

Я ищу способ определить, соответствует ли текст, введенный в ячейку 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

Это не самая красивая формула в мире, но она может вам подойти. =ЕСЛИОШИБКА(ЕСЛИ(СЦЕПИТЬ(СРЕДНЕЕ(A1,1,4),СРЕДНЕЕ(A1,6,2),СРЕДНЕЕ(A1,9,2))*1>1,"ИСТИНА"),"ЛОЖЬ")

введите описание изображения здесь

Надеюсь это поможет

решение3

Учитывая, что@АлексМдал ответ в виде комментария и попросил меня ответить на мой вопрос, используя его стратегию, вот что сделало именно то, что мне было нужно.

Я установил правило проверки данных следующим образом:

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

И вот что я получил:

введите описание изображения здесь

введите описание изображения здесь

Связанный контент