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))
这会在“ – ”之后得到最右边的字符。