使用逻辑运算符与Excelstring

用大于或小于逻辑运算符计算string时,有人能解释excel的行为吗? 一些例子:

=("ABC">"ABCD") #false =("ABC">1) #true =("ABC">"1") #true =("ABC">TODAY()) #true =("ABC">TRUE) #false =("ABC">BAHTTEXT(1)) #false 

@thanhlvt提到的是正确的。 然而,为了理解这种奇怪的行为,重要的是要理解这种行为并不是很奇怪 – 这是Excel使用的逻辑。

当比较中存在非数字数据时,Excel基本上应用其sorting规则来确定哪一个较小(先来),哪一个更大(接下来来),或者如果两边匹配(它们是相等的)。

在执行sorting时, Excel首先按数据typessorting, 然后按数据typessorting 。 它应用以下升序规则:

  1. 增加值的数字(例如1,2,3 …)
  2. 使用字符优先/ Unicodesortingalgorithm (例如1,2,3,…,a,b,c,…)按照Unicode值/代码点的顺序将文本(包括数字视为文本和其他字符) )。 我们可以通过Excel公式=UNICODE("xyz")获得Unicode值
  3. 逻辑值(False,True)
  4. 错误值(例如#DIV / 0!,#N / A …)
  5. 空白

现在让我们使用上面的规则来解决问题中给出的例子:

 Argument | Result| Explanation -------------------|-------|----------------------------------------------- ="ABC">"ABCD" | FALSE | 1st 3 places are identical. In the 4th place, the 2nd part is > 1st part ="ABC"> 1 | TRUE | numbers have precedence over text ="ABC"> "1" | TRUE | ASCII/Unicode for numbers are from 48 to 57, and for alphabets it starts from 65 ="ABC">TODAY() | TRUE | Date is basically a number with 1/1/1900 being 1. Value of Jul 23, 2017 is 42,939 ="ABC">TRUE | FALSE | text characters have precedence over logical values ="ABC">BAHTTEXT(1) | FALSE | Unicode value of BAHTTEXT(1) (Thai) comes much later, ie at 3627 

请注意,Excel不适用于此目的的EXACT方法,因此"abc" = "ABC"结果为TRUE

关于string比较,Excel从第一个字符开始比较。 例如:

 "A" = "A" "AB" > "AA" "ABC" < "ABD" 

用不同的数据types比较,结果是:

 String > Number/Date String < Boolean