0

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

4

4 回答 4

0

由于每个字符都有一个确定的范围 (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

于 2013-09-11T18:16:40.570 回答
0

基于 Excel 2007:

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

作为 Validation criteria 下的公式,Allow: Custom 验证位置 4、8 和 12 中的连字符。

于 2013-09-11T10:53:35.173 回答
0

如果单元格是 I10

数据 >> 数据验证:自定义

=IF(LEN(I10)<=12;TEXT(I10;"000-000-000-000");FALSE)
于 2014-08-23T17:09:42.513 回答
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)))

这确保了斜线和数字。

您可能需要,根据您当地的情况;进行更改。.,

于 2013-09-11T11:09:32.180 回答