セルのテキストに特定の形式があるかどうかを確認する

セルのテキストに特定の形式があるかどうかを確認する

Excel のセルに入力されたテキストが「0000/00/00」(0 は任意の 1 桁の数字 {0、1、2、3、4、5、6、7、8、9}) の形式に従っているかどうかを確認する方法を探しています。

セルの書式が「0000/00/00」になっているかどうかを確認する方法はありますか?

すでにわかっていること:

  • セルのデータ検証ルールで DATEVALUE() 関数を使用して確認することはできますが、この方法の問題は、1001/04/07 を有効な日付として受け入れないことです。
  • テキストに 2 つの「/」文字が含まれていて、その長さが 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

これはあまりきれいな式ではありませんが、役に立つかもしれません。 =IFERROR(IF(CONCATENATE(MID(A1,1,4),MID(A1,6,2),MID(A1,9,2))*1>1,"TRUE"),"FALSE")

ここに画像の説明を入力してください

お役に立てれば

答え3

それを考慮するとアレックスMコメントとして回答をくれて、彼の戦略を使って私の質問に答えるように頼みました。ここに私がまさに必要としていたものがあります。

データ検証ルールを次のように設定しました。

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

そして、私が得たものは次のとおりです:

ここに画像の説明を入力してください

ここに画像の説明を入力してください

関連情報