使用带有excel字符串的逻辑运算符

时间:2017-05-23 09:16:19

标签: excel sorting

在与大于或小于逻辑运算符一起评估字符串时,有人可以解释excel的行为吗?一些例子:

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

2 个答案:

答案 0 :(得分:2)

@thanhlvt提到的是对的。但是,要理解奇怪的行为,重要的是要理解行为并不是很奇怪 - 这是Excel使用的逻辑。

当比较中存在非数字数据时,Excel基本上应用其排序规则来确定哪一个较小(首先出现)哪一个较大(接下来出现),或双方是否匹配(它们是相等)。

执行排序时, Excel首先按数据类型排序,然后按数据类型排序。它适用以下升序规则:

  1. 数值增加(例如,1,2,3,......)
  2. 使用字符优先级/ Unicode collation algorithm(例如1,2,3,...,a,b, C, ...)。我们可以通过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, i.e. at 3627

请注意,Excel不会为此目的应用EXACT方法,因此"abc" = "ABC"会生成TRUE

答案 1 :(得分:0)

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

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

使用不同的数据类型比较,结果是:

String > Number/Date
String < Boolean