Excel:字符串与整数比较结果为 TRUE,但为什么呢?

Excel: string vs integer comparison equals TRUE, but why?

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

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

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

然后我将其与参考值(在本例中位于 DO 中)进行比较,return 如果为真则为 1,如果为假则为 0,如果出现错误,则会再次打印破折号。

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

我假设比较 "-">=DO 会抛出该错误。然而,出于某种原因,if 语句产生了 1,这意味着比较是 True

这样的比较怎么可能不报错呢?写出来的函数如下:

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

字符串与数字的比较不会产生错误 - 字符串(在本例中为前面带有撇号的破折号)总是更大。

您可以在索引周围放置一个 VALUE 函数,这样当它尝试转换字符串时就会抛出错误

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

或者使用 ISNUMBER

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

略有不同 - 如果第一个公式遇到格式为文本的数字,它会将其转换为数字,但第二个公式会将其视为文本。