数据验证在Excel中格式为### - ### - ### - ###

时间:2013-09-11 09:57:33

标签: excel excel-vba excel-2010 validation vba

道歉,如果这是一个常识问题,检查网络但找不到我想要的确切答案。我试图使excel只允许以下列格式输入数字[### - ### - ### - ###](例如,像102-204-304-101这样的东西)。我有类似的东西,如果我突出显示一个单元格并转到(格式化单元格 - >自定义 - >并在“类型字段”中输入000“ - ”000“ - ”000“ - ”000。这有效有人输入102204304101,它将转换为102-204-304-101。但我希望其他用户明确键入连字符。我猜它可以在数据功能区下的“数据验证”部分完成(注意我正在使用Excel 2010),但无法弄清楚如何做到这一点。如果有人可以提供任何提示,将不胜感激。请提前感谢。

4 个答案:

答案 0 :(得分:0)

基于Excel 2007:

=AND(MID(A1,4,1)="-",MID(A1,8,1)="-",MID(A1,12,1)="-")  

作为验证标准下的公式,允许:自定义,验证位置4,8和12中的连字符。

答案 1 :(得分:0)

使用此验证公式(将D11替换为适当的单元格):

=IF(MID(D11;4;1)&MID(D11;8;1)&MID(D11;12;1)="---";ISNUMBER(VALUE(-0,1&MID(D11;1;3)&MID(D11;5;3)&MID(D11;9;3)&MID(D11;13;3)&1E+100)))

这可以确保斜线和数字。

您可能需要根据当地人将,更改为;.更改为,

答案 2 :(得分:0)

因为每个字符都有一个明确的范围(0-9-),我们可以使用字符的ASCII值来检查文本。我们还检查长度,如果字符串太短(在eqation中产生错误,我们将整个事物包装在IFERROR中。

构建它,我们使用CODE和MID来检查每个字符:

降低范围:CODE(MID(A1, {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},1)) >= {48,48,48,45,48,48,48,45,48,48,48,45,48,48,48}
上限范围:CODE(MID(A1, {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}, 1)) <= {57,57,57,45,57,57,57,45,57,57,57,45,57,57,57}
长度:LEN(A1)=15

必须通过所有测试:AND
并且不能产生错误IFERROR

将所有这些放在一起,我们得到:

  

= IFERROR(AND(LEN(A1)= 15,CODE(MID(A1,{1,2,3,4,5,6,7,8,9,10,11,12,13,14, 15},1))&gt; = {48,48,48,45,48,48,48,45,48,48,48,45,48,48,48},代码(MID(A1,{1, 2,3,4,5,6,7,8,9,10,11,12,13,14,15},1))&lt; = {57,57,57,45,57,57,57, 45,57,57,57,45,57,57,57}),FALSE)

将它放在您希望他们输入代码的位置旁边的单元格中(本例中为B1),并将验证放在=B1

答案 3 :(得分:0)

如果Cell是I10

DATA&gt;&gt; DATAVALIDATION:CUSTOM

=IF(LEN(I10)<=12;TEXT(I10;"000-000-000-000");FALSE)