对字符串中数字字符数的数据验证

Data validation on number of numerical characters in a string

尝试将公式添加到数据验证中,以检查字符串是 6 位数字,还是 6 位带连字符或空格的数字。例如

123456 要么 12-34-56 要么 12 34 56

该字符串还可以包含前导零。

用户不能输入与上述格式不同的字符串,所以

123-456 要么 1234567 ....例如

不想使用 VBA,但正在努力将其变成数据验证公式。

如有任何想法,我们将不胜感激

试试这个:

=AND(SUBSTITUTE(SUBSTITUTE(A1," ",""),"-","")*1<=999999,SUBSTITUTE(SUBSTITUTE(A1," ",""),"-","")*1>=1,LEN(SUBSTITUTE(SUBSTITUTE(A1," ",""),"-",""))=6)

这个公式去掉连字符和空格,然后检查数字是否为6位,是否在1到999999之间。如果有letters/symbols,*1部分会出错

编辑: @JvdV 身份正确。我误解了你的要求。这是我的第二次尝试:

=AND(OR(ISNUMBER(MATCH("??-??-??",A1,0)),ISNUMBER(MATCH("?? ?? ??",A1,0)),AND(IFERROR(A1*1,0)<=999999,IFERROR(A1*1,0)>=1)),ISNUMBER(SUBSTITUTE(SUBSTITUTE(A1,"-","")," ","")*1))

以下是它允许和不允许的内容:

现在有点困难,但是呢:

=AND(TRIM(A1)=RIGHT(A1,8),MID(RIGHT(TEXT(A1,"00-00-00"),8),3,1)=MID(RIGHT(TEXT(A1,"00-00-00"),8),6,1),LEN(SUBSTITUTE(SUBSTITUTE(A1," ",""),"-",""))=6,ISNUMBER(--SUBSTITUTE(SUBSTITUTE(A1," ",""),"-","")))