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 thru 4"

我想要输出“9到24”。 这很奇怪,因为if B9="18-24" ,那么这个公式正确地吐出"18 thru 24"

但是,如果短划线之前的数字是单个数字,则似乎存在问题。 而我卡住了。

所以实际上相关的那个长公式的一点是:

LEFT(B9,FIND("-",B9)-1) & " thru " & RIGHT(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)) 

你正在使用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将返回string的最右边的字符。 例如:

 RIGHT("hello", 1) 

将返回o

在你的function中,你正在做以下事情:

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

这是从“ – ”减去1的位置作为从右侧使用的字符数。 所以你使用第一个数字的长度作为第二个数字的长度。

相反,你应该这样做:

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

这会在“ – ”之后得到最右边的字符。