Excel的FALSE是无限的吗?

时间:2012-11-21 16:50:32

标签: excel

为什么=FALSE<10000000000评估为FALSE=FALSE>10000000000评估为TRUE?我尝试了一些不同的数字,这似乎总是如此。

2 个答案:

答案 0 :(得分:4)

这是设计的。搜索“排序排除故障”的帮助以查看默认排序顺序。

  

在升序排序中,Microsoft Excel使用以下顺序。

     

数字:数字从最小的负数到最大的正数排序。

     

字母数字排序:当您对字母数字文本进行排序时,Excel会逐个字符地从左到右排序。例如,如果单元格包含文本“A100”,则Excel将单元格放置在包含条目“A1”的单元格之后,并且在包含条目“A11”的单元格之前。

     

包含数字的文字和文字按以下顺序排序:

     

0 1 2 3 4 5 6 7 8 9(空间)! “#$%&amp;()*,。/:;?@ [\ _] ^ _` {|}〜+&lt; =&gt; A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

     

忽略撇号(')和连字符( - ),但有一个例外:如果除连字符外两个文本字符串相同,则带连字符的文本最后排序。

     

逻辑值:在逻辑值中,FALSE位于TRUE之前。

     

错误值:所有错误值均相等。

     

空白:空白总是排在最后。

默认排序顺序很重要,因为这是Excel设计用于比较不同数据类型的方式。逻辑值始终在文本和数字之后。错误值总是在此之后。空白永远是最后的。当你使用比较运算符(&lt;,&lt; =,=等)时,它使用与排序相同的比较算法(或者更有可能的是,排序算法使用比较运算符代码,这使得它们相同)。

TRUE<>1根据排序顺序,但--TRUE=1。公式解析器认识到你试图否定某些东西。如果它是布尔值,则将其转换为0或1.布尔值没有0-ish或1-ish,它只是内部类型强制函数的结果。如果您键入--"SomeString",它会执行相同的操作。它将字符串发送到Type Coercion函数,该函数报告“Unable to coerce”并最终为#VALUE!在牢房里。

这就是'为什么它表现得那么'的答案。我不知道'为什么他们这样设计'答案。

答案 1 :(得分:2)

显然,布尔值TRUE / FALSE是数字的不同数据类型。检查这个(http://msdn.microsoft.com/en-us/library/office/bb687869.aspx)以查看布尔变量是以2字节存储的(或者对于某个体系结构而言,是一个短整数)。然而,这是存储数据的内存,因为excel实际上有一个特殊的布尔变量数据类。具体来说:xltypeNum表示数字,xltypeStr表示字符串,xltypeBool表示我们讨论的内容。

相同类型之间的关系是明确的,现在是什么TRUE&lt; 1000呢?可能没有任何意义 - 有用。

克服这个问题的方法:

=ABS(BOOLEAN_VAR), i.e.  =ABS(FALSE) --> 0 and =ABS(TRUE)  --> 1

=INT(BOOLEAN_VAR), i.e.  =INT(FALSE) --> 0 and =INT(TRUE)  --> 1 

=BOOLEAN_VAR*1,  i.e.  =FALSE*1 --> 0 and =TRUE*1  --> 1 

=+BOOLEAN_VAR,  i.e.  =+FALSE --> 0 and =+TRUE  --> 1 

正如您在这些方面看到的那样,您可以强制excel输出数值类型的数据,方法是将boolean提供给函数或使用表达式中的boolean var。