尝试编写自定义数据验证公式,该公式仅允许以下格式的值:2位数年份(这可能只是2位数字),短划线(" - "),然后是1或者2个字母的字符(更喜欢大写字母,但更适合小写字母),另一个字母表(" - "),然后是5位数字。所以最终值看起来像:17-FL-12345 ......或16-G-00008 ...
我实际上有一个但更多,但如果我能够完成上述工作,那将是非常棒的。我不知道是否有方法,但如果另外我可以使用自定义格式来让短信在未输入时显示,即用户输入" 17FL12345&#34 ;它会自动格式化为" 17-FL-12345"。最后,再次,这也不是一个交易破坏者,但如果最后5位数字会增加任何前导零,即用户输入17-G-8(或仅17G8)也会很棒它被格式化为17-G-00008。
不幸的是,不能使用VBA。我所看到的类似问题的一些潜在解决方案包括:
Data VAlidation - Text Length & Character Type
Excel : Data Validation, how to force the user to enter a string that is 2 char long?
答案 0 :(得分:1)
试试这个:
=AND(ISNUMBER(VALUE(LEFT(A1,2))),MID(A1,3,1)="-",OR(ISNUMBER(FIND(MID(A1,4,1),$C$1)),AND(ISNUMBER(FIND(MID(A1,4,1),$C$1)),ISNUMBER(FIND(MID(A1,5,1),$C$1)))),MID(A1,LEN(A1)-5,1)="-",ISNUMBER(VALUE(RIGHT(A1,5))),OR(LEN(A1)=11,LEN(A1)=10),LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))=2,LEN(A1)-LEN(SUBSTITUTE(A1,"+",""))=0,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))=0)
编辑:
我编辑了原始功能,为了更加安全,省略了Isnumber
部分,而是逐位数字。
如果要超过255限制,则必须将功能切片。
我创建了5个函数。
=AND(ISNUMBER(FIND(LEFT(A1),$C$2)),ISNUMBER(FIND(MID(A1,2,1),$C$2)))
=MID(A1,3,1)="-"
=IF(LEN(A1)=10,AND(ISNUMBER(FIND(MID(A1,4,1),$C$1)),MID(A1,5,1)="-"),IF(LEN(A1)=11,AND(ISNUMBER(FIND(MID(A1,4,1),$C$1)),ISNUMBER(FIND(MID(A1,5,1),$C$1)))))
=IF(LEN(A1)=10,MID(A1,5,1)="-",IF(LEN(A1)=11,MID(A1,6,1)="-"))
=IF(LEN(A1)=10,AND(ISNUMBER(FIND(MID(A1,6,1),$C$2)),ISNUMBER(FIND(MID(A1,7,1),$C$2)),ISNUMBER(FIND(MID(A1,8,1),$C$2)),ISNUMBER(FIND(MID(A1,9,1),$C$2)),ISNUMBER(FIND(MID(A1,10,1),$C$2))),IF(LEN(A1)=11,AND(ISNUMBER(FIND(MID(A1,7,1),$C$2)),ISNUMBER(FIND(MID(A1,8,1),$C$2)),ISNUMBER(FIND(MID(A1,9,1),$C$2)),ISNUMBER(FIND(MID(A1,10,1),$C$2)),ISNUMBER(FIND(MID(A1,11,1),$C$2)))))
如图所示设置数据验证: