Using logical operators with excel strings
Can someone explain excel's behavior when evaluating strings together with the greater than or less than logical operators? Some examples:
=("ABC">"ABCD") #false
=("ABC">1) #true
=("ABC">"1") #true
=("ABC">TODAY()) #true
=("ABC">TRUE) #false
=("ABC">BAHTTEXT(1)) #false


What @thanhlvt mentioned is right. However, to understand the odd behavior, it is important to understand that the behavior isn't really odd - it's the logic Excel uses.
When a non-numeric data is present in the comparison, Excel basically applies its sort rules to determine which one is smaller (comes first) and which one is greater (comes comes next), or if both sides match (they are equal).
When performing a sort, Excel first sorts by the data type and then within the data type. It applies the following ascending order rules:

numbers in increasing value (e.g. 1, 2, 3, ...)
text (including numbers treated as text, and other characters) in the order of their Unicode values/code points using character precedence/Unicode collation algorithm (e.g. 1, 2, 3, ..., a, b, c, ...). We can get the Unicode value through Excel formula =UNICODE("xyz")

logical values (False, True)
error values (e.g. #DIV/0!, #N/A, ...)
blanks

Now let's address the example given in the question using the above rules:
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

Note though, Excel doesn't applies EXACT method for this purpose and so "abc" = "ABC" results in TRUE.

thanks for the explanation and the link to the unicode algo!

(1) When I test this, (a) when I compare a totally blank cell to a number, the blank cell is treated as a numeric zero; (b) otherwise, blank is treated as text (of course it is the lowest possible text value); and (c) when I compare an error value to anything, the result of the comparison is an error (i.e., neither true nor false).  Can you describe conditions under which the rules you present are correct?   (2) Can you provide a link to an authoritative statement or specification of this?   (Ideally microsoft.com or office.com)

About string comparison, Excel compares from the first character.
For example:
"A" = "A"
"AB" > "AA"
"ABC" < "ABD"

With different data type comparison, the result is:
String > Number/Date
String < Boolean

