数字+文本的数据验证

时间:2017-05-11 19:27:34

标签: excel validation

尝试编写自定义数据验证公式,该公式仅允许以下格式的值: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。我所看到的类似问题的一些潜在解决方案包括:

https://www.mrexcel.com/forum/excel-questions/615799-data-validation-mixed-numeric-text-formula-only.html

Data VAlidation - Text Length & Character Type

Excel : Data Validation, how to force the user to enter a string that is 2 char long?

1 个答案:

答案 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)

假设您要验证A1。我在C1中插入了字母。 enter image description here

编辑:

我编辑了原始功能,为了更加安全,省略了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)))))

如图所示设置数据验证:

enter image description here