I';I’’我试图在excel中创建一个检查数字的公式,但单元格中必须包含破折号

I';I’’我试图在excel中创建一个检查数字的公式,但单元格中必须包含破折号,excel,excel-formula,Excel,Excel Formula,我有这样的想法: A1: ABC-DE442 B1: 0069-1234-12 A1: ABC-DE442 B1: 004-2345-34 我试着做一个公式,看看A1,得到数字442,然后检查B1的格式是否是4个数字,一个破折号,4个数字,一个破折号,最后是2个数字。我想确保这可以与任何数字除了442虽然。所以如果我用123而不是442,它需要1个数字,破折号,2个数字,破折号,和3个数字 如果我有这样的问题,它还需要给我一个错误: A1: ABC-DE442 B1: 0069-1234-1

我有这样的想法:

A1: ABC-DE442
B1: 0069-1234-12
A1: ABC-DE442
B1: 004-2345-34
我试着做一个公式,看看A1,得到数字442,然后检查B1的格式是否是4个数字,一个破折号,4个数字,一个破折号,最后是2个数字。我想确保这可以与任何数字除了442虽然。所以如果我用123而不是442,它需要1个数字,破折号,2个数字,破折号,和3个数字

如果我有这样的问题,它还需要给我一个错误:

A1: ABC-DE442
B1: 0069-1234-12
A1: ABC-DE442
B1: 004-2345-34
因为在破折号前的第一部分只有三个数字


希望我已经很清楚我要做什么。任何帮助都将不胜感激。

这在Excel公式中应该是可能的,但它会变得有点复杂。您可能要使用的函数有
FIND
LEFT
LEN
MID
VALUE

比如说,

C1:=查找(“-”,B1)

将返回要测试的字符串中第一个破折号的位置,例如5。然后

D1:=左侧(B1,C1-1)

将返回该破折号之前的字符,即“0069”。同时,您需要从第一个字符串(A1中的字符串)中获取三行数字的长度。那根绳子总是一样长吗?如果是的话,你可以使用

=值(中间值(A1,7,1))

返回A1中字符串的第7个字符,并将其转换为数字(4)。现在,您可以测试该值是否等于第一行字符的长度,即
LEN(D1)

但是这些字符都是数字吗?那么,您可以尝试将它们转换为具有
值(D1)
的数字,如果参数不能转换为数字,则返回
#VALUE

好的,这检查了第一次运行的字符,其余的字符呢?那么

=MID(B1,FIND(“-”,B1)+1999)

将在第一个破折号之后为您提供原始字符串的剩余部分,您可以用相同的方式进行分析,依此类推


在计算中间值时,使用大量单元格保存中间值是开发这些公式的最简单方法,但一旦您确信这些公式工作正常,就可以将它们合并到较少的单元格中。无论你想出什么,确保你用很多不同的输入来测试它,以检查你的公式是否以你期望的方式响应它们。(特别是,如果破折号后有一个或多个空格,请检查会发生什么情况,因为
VALUE
将忽略前导空格-您可能希望在初始文本上使用
替换
函数来删除任何空格。)

这在Excel公式中应该是可行的,但会变得有点复杂。您可能要使用的函数有
FIND
LEFT
LEN
MID
VALUE

比如说,

C1:=查找(“-”,B1)

将返回要测试的字符串中第一个破折号的位置,例如5。然后

D1:=左侧(B1,C1-1)

将返回该破折号之前的字符,即“0069”。同时,您需要从第一个字符串(A1中的字符串)中获取三行数字的长度。那根绳子总是一样长吗?如果是的话,你可以使用

=值(中间值(A1,7,1))

返回A1中字符串的第7个字符,并将其转换为数字(4)。现在,您可以测试该值是否等于第一行字符的长度,即
LEN(D1)

但是这些字符都是数字吗?那么,您可以尝试将它们转换为具有
值(D1)
的数字,如果参数不能转换为数字,则返回
#VALUE

好的,这检查了第一次运行的字符,其余的字符呢?那么

=MID(B1,FIND(“-”,B1)+1999)

将在第一个破折号之后为您提供原始字符串的剩余部分,您可以用相同的方式进行分析,依此类推


在计算中间值时,使用大量单元格保存中间值是开发这些公式的最简单方法,但一旦您确信这些公式工作正常,就可以将它们合并到较少的单元格中。无论你想出什么,确保你用很多不同的输入来测试它,以检查你的公式是否以你期望的方式响应它们。(特别是,如果破折号后有一个或多个空格,请检查会发生什么情况,因为
VALUE
将忽略前导空格-您可能希望在初始文本上使用
替换
函数来删除任何空格。)

这在Excel公式中应该是可行的,但会变得有点复杂。您可能要使用的函数有
FIND
LEFT
LEN
MID
VALUE

比如说,

C1:=查找(“-”,B1)

将返回要测试的字符串中第一个破折号的位置,例如5。然后

D1:=左侧(B1,C1-1)

将返回该破折号之前的字符,即“0069”。同时,您需要从第一个字符串(A1中的字符串)中获取三行数字的长度。那根绳子总是一样长吗?如果是的话,你可以使用

=值(中间值(A1,7,1))

返回A1中字符串的第7个字符,并将其转换为数字(4)。现在,您可以测试该值是否等于第一行字符的长度,即
LEN(D1)

但是这些字符都是数字吗?那么,您可以尝试将它们转换为具有
值(D1)
的数字,如果参数不能转换为数字,则返回
#VALUE

好的,这检查了第一次运行的字符,什么