数据validation与数字+文本
试图编写一个自定义的数据validation公式,它只允许以下格式的值:2位年份(可以是2个数字),破折号(“ – ”),然后是1或2个字母更喜欢大写,但会解决小写),另一个破折号(“ – ”),然后一个5位数字。 所以最终的值如下所示:17-FL-12345 …或16-G-00008 …
我其实还有更多,但是如果我能得到上述的工作,这将是了不起的。 我不知道是否有办法,但如果另外我可以使用自定义格式来获取没有input的破折号,即用户input“17FL12345”,它会自动格式化为“17- FL-12345" 。 最后,这也不是一个交易断路器,但是如果最后5位数字会加上任何前导零,也就是说,用户input17-G-8(或者只是17G8),并且它被格式化为17-G-00008。
不幸的是不能使用VBA。 我所看到的类似问题的一些潜在解决scheme包括:
https://www.mrexcel.com/forum/excel-questions/615799-data-validation-mixed-numeric-text-formula-only.html
数据VAlidation – 文本长度和字符types
Excel:数据validation,如何强制用户input2个字符的string?
尝试这个:
=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)
假设,你想validationA1。 我在C1中插入了字母。
编辑:
我编辑了原来的function,更安全,省略了Isnumber
部分,而是逐个数字地进行。 如果你想超过255的限制,你必须切分function。 我创build了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)))))
如图所示设置数据validation: