Utilisation d'opérateurs logiques avec des strings Excel

Quelqu'un peut-il expliquer le comportement d'Excel lors de l'évaluation de strings avec les opérateurs plus ou less que logiques? Quelques exemples:

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

Ce que @thanhlvt a mentionné est juste. Cependant, pour comprendre le comportement étrange, il est important de comprendre que le comportement n'est pas vraiment bizarre – c'est la logique utilisée par Excel.

Lorsqu'une donnée non numérique est présente dans la comparaison, Excel applique essentiellement ses règles de sorting pour déterminer lequel est plus petit (vient en premier) et lequel est plus grand (vient ensuite) ou si les deux côtés correspondent (ils sont égaux).

Lors de l'exécution d'une sorte, Excel sortingomphe d'abord par le type de données puis dans le type de données . Il applique les règles de command ascendantes suivantes:

  1. nombres en valeur croissante (p. ex. 1, 2, 3, …)
  2. text (y compris les numéros traités comme du text et d'autres caractères) dans l'ordre de leurs valeurs Unicode / points de code utilisant l' algorithm de classment Priority / Unicode (par ex. 1, 2, 3, …, a, b, c, … ). Nous pouvons get la valeur Unicode via Excel formula =UNICODE("xyz")
  3. valeurs logiques (faux, vrai)
  4. valeurs d'erreur (p. ex. # DIV / 0 !, # N / A, …)
  5. blancs

Maintenant, abordons l'exemple donné dans la question en utilisant les règles ci-dessus:

 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 

Note cependant, Excel n'applique pas la méthode EXACT à cet effet et donc "abc" = "ABC" aboutit à TRUE .

À propos de la comparaison des strings, Excel se compare à partir du premier caractère. Par exemple:

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

Avec une comparaison de type de données différente, le résultat est:

 Ssortingng > Number/Date Ssortingng < Boolean