Excel:string与整数比较等于TRUE,但是为什么?

在我的Excel文件中,我有一些包含破折号或整数的数据。 数据如下所示:

在这里输入图像说明

以下,我想检查这些值是否高于某个特定的参考整数。 我使用以下(清理)INDEX语句来获取单个值:

INDEX($E6:$DL6;<Row>;<Column>)

然后将其与参考值(在这种情况下,位于DO$4中)进行比较,如果为True,则返回1;如果为False,则返回0;如果发生错误,则会再次打印短划线。

=IFERROR(IF(<Indexed value>=DO$4;1;0);"-")

我会假设比较"-">=DO$4会抛出这个错误。 但是,由于某种原因,if语句产生1 ,意味着比较结果为True

这样的比较怎么可能不会产生错误呢? 写出的function如下:

=IFERROR(IF(INDEX($E6:$DL6;1;<Column-indexer>)>=DO$4;1;0);"-")

string与数字的比较不会产生错误 – string(在这种情况下,前面带有撇号的短划线)总是更大。

在这里输入图像说明

你可以在索引周围放一个VALUE函数,所以如果试图转换一个string的话会引发一个错误

 =IFERROR(IF(VALUE(INDEX($E6:$DL6;1;<Column-indexer>))>=DO$4;1;0);"-") 

或者使用ISNUMBER

 =IF(ISNUMBER(INDEX($E6:$DL6;1;<Column-indexer>)),if(INDEX($E6:$DL6;1;<Column-indexer>)>=DO$4;1;0);"-") 

有一个细微的差别 – 如果第一个公式遇到一个格式为文本的数字,它会将其转换为数字,但第二个将它视为文本。

Interesting Posts