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);"-")
有一个细微的差别 – 如果第一个公式遇到一个格式为文本的数字,它会将其转换为数字,但第二个将它视为文本。