我们的发票#格式非常严格,必须符合某种格式。我们手动执行此操作,并且经常会出现多种变化,因此尝试创建数据验证以控制发票编号的输入。
以下是格式:
YYYYMMDD-RNN
需要一个公式来验证这一点。
答案 0 :(得分:1)
以下公式应该有效,但我无法将其插入到自定义数据验证中。我怀疑这是一个字符限制。如果有人能发光,那就太好了。
= IF(AND(LEFT(A1; 4)* 1·= YEAR(TODAY()); LEFT(A1; 4)* 1> = 2000); IF(AND(MID(A1; 5; 2) * 1> = 1; MID(A1; 5; 2)* 1·= 12); IF(AND(MID(A1; 7; 2)* 1> = 1; MID(A1; 5; 2)* 1·; = 30); IF(MID(A1; 9; 1)=" - &#34 ;; IF(AND(MID(A1; 10; 1)* 1> = 0; MID(A1; 10; 1 )* 1·= 9); IF(AND(MID(A1; 11; 2)* 1> = 1; MID(A1; 11; 2)* 1·= 99); TRUE; FALSE); FALSE); FALSE ); FALSE); FALSE); FALSE)
P.S。:我在2000年之后没有发票。
答案 1 :(得分:0)
在标准模块代码表中尝试使用此UDF。
Option Explicit
Function invoiceCheck(rng As Range) As Boolean
Dim tmp As String
tmp = rng.Value2
'check length
If Len(tmp) <> 12 Then Exit Function
'check valid date
If Not IsDate(Join(Array(Mid(tmp, 5, 2), Mid(tmp, 7, 2), Left(tmp, 4)), "/")) Then Exit Function
'check date is today or earlier
If CDate(Join(Array(Mid(tmp, 5, 2), Mid(tmp, 7, 2), Left(tmp, 4)), "/")) > Date Then Exit Function
'make sure there is a hyphen
tmp = Split(tmp, "-")(1)
invoiceCheck = IsNumeric(tmp)
End Function