
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"와 같은 항목을 유효한 것으로 허용한다는 것입니다.
추신: 저는 매크로나 확장 프로그램 사용이 허용되지 않는 환경에서 작업하고 있습니다!
답변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
답변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)
그리고 내가 얻은 것은 다음과 같습니다.