0

我在 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"

但是,如果破折号前面的数字是个位数,则似乎存在问题。我被困住了。

4

3 回答 3

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”部分更改为:

RIGHT(B9,LEN(B9) - FIND("-",B9))
于 2013-08-19T14:28:13.073 回答
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)))))
于 2013-08-19T14:27:06.803 回答
0

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

RIGHT("hello", 1)

将返回o

在您的函数中,您正在执行以下操作:

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

这是将“-”的位置减去 1 作为从右侧使用的字符数。因此,您使用第一个数字的长度作为第二个数字的长度。

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

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

这将为您提供“-”之后的最右边的字符。

于 2013-08-19T14:27:58.917 回答