
我正在尋找一種方法來確定輸入到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
答案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)
這是我得到的: