我找到了很多关于这个问题的部分答案,但是要么我没有正确实施它们,要么它们与我的问题不太匹配。我有一列,每个单元格中都有两个用冒号分隔的数字。每个数字可以是一位或两位数。(例如:1:1、1:2、12:10、12:20 等)我需要查询单元格,如果冒号左侧的数字小于右侧的数字,则返回一个值,如果左侧的数字大于或等于右侧的数字,则返回其他值。我有计算来提取冒号两侧的数字:
=LEFT(E2,FIND(":",E2)-1)
以及结肠右侧:
=MID(E2,FIND(":", E2)+1,LEN(E2))
在此示例中,带冒号的数字位于单元格 E2 中。我还有另一个计算来比较这两个数字并返回所需的结果:
=IF((LEFT(E2,FIND(":",E2)-1))<(MID(E2,FIND(":",E2)+1,LEN(E2))),"Divider, ","Combiner, ")
其思想是,如果冒号左边的数字小于右边的数字,则返回“Divider”,如果左边的数字相等或更大,则返回“Combiner”。
让我感到沮丧的是,提取冒号两侧数字的计算是有效的,而确定哪个数字更大的计算只有当冒号左侧的第一位数字小于右侧的数字时才会失败,即使左侧数字有第二位数字,因此更大。例如,对于 12:3,它返回“Divider, ”,尽管 12 大于 3,它应该返回“Combiner, ”。但我知道它看到的是 12 的两个数字,因为我提取左侧数字的公式有效。
非常感谢任何建议。谢谢。——Dan Littman
答案1
这是因为 LEFT、MID、RIGHT 返回一个字符串,并且"3"
大于"12"
文本逐个字符的移动。
您需要将数字更改为数字,然后--
执行以下操作:
=IF((--LEFT(E2,FIND(":",E2)-1))<(--MID(E2,FIND(":",E2)+1,LEN(E2))),"Divider, ","Combiner, ")
答案2
LEFT
将您的和MID
函数调用包装在一个VALUE
调用中:
=IF((VALUE(LEFT(E2,FIND(":",E2)-1)))<VALUE((MID(E2,FIND(":",E2)+1,LEN(E2)))),"Divider, ","Combiner, ")