将逻辑运算符与 Excel 字符串一起使用



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

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

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

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

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

  1. 数值递增的数字(例如 1、2、3 等)
  2. 文本
  3. (包括被视为文本的数字和其他字符)使用字符优先级/Unicode 排序规则算法(例如 1、2、3、...、a、b、c、...)按其 Unicode 值/码位的顺序排列。我们可以通过Excel公式获取Unicode值=UNICODE("xyz")
  4. 逻辑值(假、真)
  5. 错误值(例如 #DIV/0!、#N/A 等)
  6. 空白

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

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

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

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

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

String > Number/Date
String < Boolean

相关内容

最新更新