Excel中的左/右函数

Excel中的左/右函数,excel,Excel,我在Excel中工作,我有以下公式: =IF(B9="1","1/1",IF(B9="2","1 & 2",IF(ISNUMBER(SEARCH("/",B9)),B9, IF(ISNUMBER(SEARCH("-",B9)),LEFT(B9,FIND("-",B9)-1)&" thru "&RIGHT(B9,FIND("-",B9)-1),"1 thru "&VALUE(B9))))) where B9="9-24" 为什么此公式输出“9到4” 我希望它输

我在Excel中工作,我有以下公式:

=IF(B9="1","1/1",IF(B9="2","1 & 2",IF(ISNUMBER(SEARCH("/",B9)),B9,
IF(ISNUMBER(SEARCH("-",B9)),LEFT(B9,FIND("-",B9)-1)&" thru 
"&RIGHT(B9,FIND("-",B9)-1),"1 thru "&VALUE(B9)))))

where B9="9-24"
为什么此公式输出
“9到4”

我希望它输出“9到24”。这很奇怪,因为
例如,如果B9=“18-24”
,那么这个公式正确地说出了
“18到24”

然而,如果破折号前面的数字是一个单位数,则似乎存在问题。我被卡住了

您使用的是
RIGHT()
您应该使用的
MID()
。要使用
MID()
,需要第三个足够长的参数来捕获破折号之后的所有内容。这项工作:

=IF(B9="1","1/1",IF(B9="2","1 & 2",IF(ISNUMBER(SEARCH("/",B9)),B9,
IF(ISNUMBER(SEARCH("-",B9)),LEFT(B9,FIND("-",B9)-1)&" thru 
"&MID(B9,FIND("-",B9)-1,99),"1 thru "&VALUE(B9)))))
您正在使用
RIGHT()。要使用
MID()
,需要第三个足够长的参数来捕获破折号之后的所有内容。这项工作:

=IF(B9="1","1/1",IF(B9="2","1 & 2",IF(ISNUMBER(SEARCH("/",B9)),B9,
IF(ISNUMBER(SEARCH("-",B9)),LEFT(B9,FIND("-",B9)-1)&" thru 
"&MID(B9,FIND("-",B9)-1,99),"1 thru "&VALUE(B9)))))

函数
RIGHT
将返回字符串最右边的字符。例如:

RIGHT("hello", 1)
将返回
o

在您的功能中,您正在执行以下操作:

RIGHT(B9,FIND("-",B9)-1)
RIGHT(B9,LEN(B9)-FIND("-",B9))
这是将“-”位置减去1作为要从右侧使用的字符数。因此,使用第一个数字的长度作为第二个数字的长度

相反,您应该执行以下操作:

RIGHT(B9,FIND("-",B9)-1)
RIGHT(B9,LEN(B9)-FIND("-",B9))

这将获得“-”之后最右边的字符

函数
RIGHT
将返回字符串最右边的字符。例如:

RIGHT("hello", 1)
将返回
o

在您的功能中,您正在执行以下操作:

RIGHT(B9,FIND("-",B9)-1)
RIGHT(B9,LEN(B9)-FIND("-",B9))
这是将“-”位置减去1作为要从右侧使用的字符数。因此,使用第一个数字的长度作为第二个数字的长度

相反,您应该执行以下操作:

RIGHT(B9,FIND("-",B9)-1)
RIGHT(B9,LEN(B9)-FIND("-",B9))

这将得到“-”后面最右边的字符,因此,这个长公式中实际相关的部分是:

左(B9,FIND(“-”,B9)-1)和“thru”&右(B9,FIND(“-”,B9)-1)

如果B9包含文本“9-24”(不带引号),则
FIND(“-”,B9)
给出2

所以你的公式变成了
LEFT(B9,1)和“thru”与RIGHT(B9,1)

这将为您提供最左侧的单个字符和最右侧的单个字符,因此“9到4”

如果B9包含文本“18-24”(不带引号),则
FIND(“-”,B9)
给出3,得到最左边的两个字符和最右边的两个字符

如果希望单元格中“-”前后的部分,则需要将公式的“右”部分更改为:

RIGHT(B9,LEN(B9) - FIND("-",B9))

因此,这一长公式的一点实际上是相关的:

左(B9,FIND(“-”,B9)-1)和“thru”&右(B9,FIND(“-”,B9)-1)

如果B9包含文本“9-24”(不带引号),则
FIND(“-”,B9)
给出2

所以你的公式变成了
LEFT(B9,1)和“thru”与RIGHT(B9,1)

这将为您提供最左侧的单个字符和最右侧的单个字符,因此“9到4”

如果B9包含文本“18-24”(不带引号),则
FIND(“-”,B9)
给出3,得到最左边的两个字符和最右边的两个字符

如果希望单元格中“-”前后的部分,则需要将公式的“右”部分更改为:

RIGHT(B9,LEN(B9) - FIND("-",B9))

我想知道他/她用这个长长的公式到底想达到什么目的。是否只是将“-”替换为“thru”?因为很明显,他/她可以使用=SUBSTITUTE(B9,“-”,“thru”)@Stepan1010,我不认为这只是-公式中有很多其他选项,具体取决于B9中包含的内容。你可能是对的,但我尽量不低估人们将他们试图做的极其简单的事情过分复杂化的能力。我想知道他/她用这个长长的公式到底想完成什么。是否只是将“-”替换为“thru”?因为很明显,他/她可以使用=SUBSTITUTE(B9,“-”,“thru”)@Stepan1010,我不认为这只是-公式中有很多其他选项,具体取决于B9中包含的内容。你可能是对的,但我尽量不低估人们将他们试图做的极其简单的事情过分复杂化的能力。