抱歉,如果这是一个常识性问题,请检查网络但找不到我想要的确切答案。我试图让 excel 只允许以以下格式输入数字 [###-###-###-###](例如,102-204-304-101 之类的东西)。我有类似的东西,如果我突出显示一个单元格并转到(格式单元格->自定义->并在“类型字段”中输入 000“-”000“-“000”-“000”。如果有人输入,这将有效102204304101,它将转换为 102-204-304-101。但我希望另一个用户显式键入连字符。我猜它可以在数据功能区下的“数据验证”部分中完成(注意我使用的是 Excel 2010 ),但无法弄清楚如何做到这一点。如果有人能提供任何提示,将不胜感激。提前谢谢你。
4 回答
由于每个字符都有一个确定的范围 (0-9
和-
),我们可以使用字符的 ASCII 值来检查文本。我们还检查长度,如果字符串太短(在等式中产生错误,我们将整个内容包装在 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, 代码(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}),假)
将其放在您希望他们输入代码的位置(本例中为 B1)旁边的单元格中,并将验证设置为=B1
基于 Excel 2007:
=AND(MID(A1,4,1)="-",MID(A1,8,1)="-",MID(A1,12,1)="-")
作为 Validation criteria 下的公式,Allow: Custom 验证位置 4、8 和 12 中的连字符。
如果单元格是 I10
数据 >> 数据验证:自定义
=IF(LEN(I10)<=12;TEXT(I10;"000-000-000-000");FALSE)
使用此验证公式(替换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)))
这确保了斜线和数字。
您可能需要,
根据您当地的情况;
进行更改。.
,