【问题标题】:Excel: string vs integer comparison equals TRUE, but why?Excel:字符串与整数比较等于 TRUE,但为什么呢?
【发布时间】:2017-06-29 08:40:32
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: excel string integer excel-2016 boolean-operations


    【解决方案1】:

    字符串与数字的比较不会产生错误 - 字符串(在这种情况下是前面带有撇号的破折号)总是更大。

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

    =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);"-")
    

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

    【讨论】:

    • 也可以像+0*1 那样做数学得到错误;D
    猜你喜欢
    • 2011-06-21
    • 2012-02-09
    • 2020-02-23
    • 2013-01-02
    • 1970-01-01
    • 2012-01-30
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多