我在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"
。
但是,如果破折号前面的数字是一位数字,那么似乎存在问题。而且我被困住了。
答案 0 :(得分:6)
因此,实际相关的那个长公式的位是:
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))
答案 1 :(得分:0)
您正在使用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)))))
答案 2 :(得分:0)
函数RIGHT
将返回字符串最右边的字符。例如:
RIGHT("hello", 1)
将返回o
。
在您的功能中,您正在执行以下操作:
RIGHT(B9,FIND("-",B9)-1)
这取决于" - "从右侧减去1作为要使用的字符数。所以你使用第一个数字的长度作为第二个数字的长度。
相反,您应该执行以下操作:
RIGHT(B9,LEN(B9)-FIND("-",B9))
这将在" - "。
之后为您提供最右边的字符