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);"-")
略有不同 - 如果第一个公式遇到格式为文本的数字,它会将其转换为数字,但第二个公式会将其视为文本。
在我的 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);"-")
略有不同 - 如果第一个公式遇到格式为文本的数字,它会将其转换为数字,但第二个公式会将其视为文本。