EXCEL单元格式的数据有效性设置为“??-????”前面两位是大写字母,后面四位是0到9的阿拉伯数字。

EXCEL某一列单元格中只能输入例如“MV-1001"的样式,其他则无效,且不能重复。

这个可以使用辅助列先对需要设定的列进行判断,间接得到结果,如果想直接如果不用辅助列,好像只能选择VBA了,下图是辅助列的设置方法,公式附后。选中需要条件判断列的某单元格,如F2,设置数据验证为自定义,公式:=G2=true

辅助列G的公式:

G2==AND(UNICODE(MID(F2,1,1))>=65,UNICODE(MID(F2,1,1))<=90)*AND(UNICODE(MID(F2,2,1))>=65,UNICODE(MID(F2,2,1))<=90)*UNICODE(MID(F2,3,1))=45*(AND(UNICODE(MID(F2,4,1))>=48,UNICODE(MID(F2,4,1))<=57,UNICODE(MID(F2,5,1))>=48,UNICODE(MID(F2,5,1))<=57,UNICODE(MID(F2,6,1))>=48,UNICODE(MID(F2,6,1))<=57,UNICODE(MID(F2,7,1))>=48,UNICODE(MID(F2,7,1))<=57))

公式即是判断每个字母的Ascii码是否在某个范围。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-09
假设要在E列设置,选中E1,数据验证,公式为=(CODE(LEFT(E1))>=65)*(CODE(LEFT(E1))<=90)*(CODE(MID(E1,2,1))>=65)*(CODE(MID(E1,2,1))<=90)*(MID(E1,3,1)="-")*FIND(MID(E1,4,1),2/17)*FIND(MID(E1,5,1),2/17)*FIND(MID(E1,6,1),2/17)*FIND(MID(E1,7,1),2/17)*(LEN(E1)=7)*(COUNTIF(E:E,E1)=1)追问

能解释一下你这个公式中各个函数的作用吗

追答

(CODE(LEFT(E1))>=65)*(CODE(LEFT(E1))<=90)限定第一个字符为大写字母,第二个大写字母与之类似,即随后的两个乘式。
(MID(E1,3,1)="-")限定第3个字符为短横线
后面几个find,都是限定字符为0-9的数字。
LEN(E1)=7限定字符长度为7位
COUNTIF(E:E,E1)=1限定该列中不允许出现重复值

追问

FIND(MID(E1,4,1),2/17)是怎么限定字符为0-9的数字的?find不是定位函数么,还有公式中2/17是什么意思?

追答

2/17就是2除以17,结果是一个包含了0~9所有数字的小数,所以用find(3,2/17),会返回数字3在2/17(这个结果中)第一次出现的位置,如果find的第一参数为数字,则可以返回一个数值(第一参数在第二参数中第一次出现的位置),否则返回一个错误值。如果是数字,则可以与别的因数相乘,结果依然是数字。否则整个乘法式子返回错误值。
在条件格式中,非0数字表示真,错误值也会被判定为为符合条件。

本回答被提问者采纳