String Comparison Using Inequalities in Excel
有人可以提供有关Excel如何使用Excel中的不相等运算符比较字符串的参考吗? 我发现了一些意外的行为:
在下面的示例中,前两列为字符串,列C为表达式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Comparison Benchmark Is A < B? Expected Pass? Q1 2009 Q4 2012 TRUE TRUE TRUE Q2 2009 Q4 2012 TRUE TRUE TRUE Q3 2009 Q4 2012 TRUE TRUE TRUE Q4 2009 Q4 2012 TRUE TRUE TRUE Q1 2010 Q4 2012 TRUE TRUE TRUE Q2 2010 Q4 2012 TRUE TRUE TRUE Q3 2010 Q4 2012 TRUE TRUE TRUE Q4 2010 Q4 2012 TRUE TRUE TRUE Q1 2011 Q4 2012 TRUE TRUE TRUE Q2 2011 Q4 2012 TRUE TRUE TRUE Q3 2011 Q4 2012 TRUE TRUE TRUE Q4 2011 Q4 2012 TRUE TRUE TRUE Q1 2012 Q4 2012 TRUE TRUE TRUE Q2 2012 Q4 2012 TRUE TRUE TRUE Q3 2012 Q4 2012 TRUE TRUE TRUE Q4 2012 Q4 2012 FALSE FALSE TRUE Q1 2013 Q4 2012 TRUE FALSE FALSE Q2 2013 Q4 2012 TRUE FALSE FALSE Q3 2013 Q4 2012 TRUE FALSE FALSE Q4 2013 Q4 2012 FALSE FALSE TRUE Q1 2014 Q4 2012 TRUE FALSE FALSE Q2 2014 Q4 2012 TRUE FALSE FALSE Q3 2014 Q4 2012 TRUE FALSE FALSE |
对于基准之前的日期,似乎Excel会比较整个字符串,而在基准日期之后,Excel只会比较字符串,直到找到比比较中的类似字符小的字符为止。
Excel在这里所做的是,它从左到右逐个字符地比较两个字符串,直到发现不匹配为止,然后具有较高字符值的字符串变为较大的字符串。 这是比较字符串的标准方法-几乎所有编程语言,数据库和其他软件包都使用它。
因此,例如,对于第一行,比较将如下所示:
1 2 3 4 5 6 7 8 | Comparison Benchmark Outcome Q Q Equal 1 4 Benchmark is greater - done comparing [space] [space] Ignored 2 2 Ignored 0 0 Ignored 0 1 Ignored 9 2 Ignored |
对于第四行,它将是:
1 2 3 4 5 6 7 8 | Comparison Benchmark Outcome Q Q Equal 4 4 Equal [space] [space] Equal 2 2 Equal 0 0 Equal 0 1 Benchmark is greater - done comparing 9 2 Ignored |
最后一行是:
1 2 3 4 5 6 7 8 | Comparison Benchmark Outcome Q Q Equal 3 4 Benchmark is greater - done comparing [space] [space] Ignored 2 2 Ignored 0 0 Ignored 1 1 Ignored 4 2 Ignored |