首页 > 解决方案 > Excel 如何比较字符串?

问题描述

期望 Excel 按字典顺序运行,但似乎并非如此。

"1"<"-1" 评估为 TRUE,尽管 "-" 按字典顺序在 "1" 之前。

这也消除了 Excel 将两个字符串都作为数字进行比较的可能性。

或者,“1”<“-”评估 FALSE,“1”<“1”也评估 FALSE。

'-' 是 45 (ASCII)

'1' 是 49 (ASCII)

标签: excelexcel-formulalexicographiclexicographic-ordering

解决方案


这似乎是一个错误,或者至少是一个(未记录的?)功能

更多示例(红色表示意外结果)
注:

  • 结果表明字符串长度在某些情况下很10.00<-10.0重要10.0<-10.0
  • VBA 不表现出这种行为

在此处输入图像描述

如果你想尝试

一个 代码(A) 代码(B) 甲<乙 左(A,1)<左(B,1)
'1 '-1 =代码(A2) =代码(左(B2,1)) =A2<B2 =左(A2,1)<左(B2,1)
'0 '-1 =代码(A3) =代码(左(B3,1)) =@A:A<@B:B =左(A3,1)<左(B3,1)
'2 '-1 =代码(A4) =代码(左(B4,1)) =@A:A<@B:B =左(A4,1)<左(B4,1)
'-2 '-1 =代码(A5) =代码(左(B5,1)) =@A:A<@B:B =左(A5,1)<左(B5,1)
'1 '-2 =代码(A7) =代码(左(B7,1)) =@A:A<@B:B =左(A7,1)<左(B7,1)
'0 '-2 =代码(A8) =代码(左(B8,1)) =@A:A<@B:B =左(A8,1)<左(B8,1)
'2 '-2 =代码(A9) =代码(左(B9,1)) =@A:A<@B:B =左(A9,1)<左(B9,1)
'-3 '-2 =代码(A10) =代码(左(B10,1)) =@A:A<@B:B =左(A10,1)<左(B10,1)
'1 '- =代码(A12) =代码(左(B12,1)) =@A:A<@B:B =左(A12,1)<左(B12,1)
'0 '- =代码(A13) =代码(左(B13,1)) =@A:A<@B:B =左(A13,1)<左(B13,1)
'2 '- =代码(A14) =代码(左(B14,1)) =@A:A<@B:B =左(A14,1)<左(B14,1)
'-3 '- =代码(A15) =代码(左(B15,1)) =@A:A<@B:B =左(A15,1)<左(B15,1)
'1 '-88 =代码(A17) =代码(左(B17,1)) =@A:A<@B:B =左(A17,1)<左(B17,1)
'1000 '-88 =代码(A18) =代码(左(B18,1)) =@A:A<@B:B =左(A18,1)<左(B18,1)
'9 '-88 =代码(A19) =代码(左(B19,1)) =@A:A<@B:B =左(A19,1)<左(B19,1)
'-9 '-88 =代码(A20) =代码(左(B20,1)) =@A:A<@B:B =左(A20,1)<左(B20,1)
'3.0 '-4.0 =代码(A22) =代码(左(B22,1)) =@A:A<@B:B =左(A22,1)<左(B22,1)
'5.0 '-4.0 =代码(A23) =代码(左(B23,1)) =@A:A<@B:B =左(A23,1)<左(B23,1)
'10.00 '-10.0 =代码(A24) =代码(左(B24,1)) =@A:A<@B:B =左(A24,1)<左(B24,1)
'10.0 '-10.0 =代码(A25) =代码(左(B25,1)) =@A:A<@B:B =左(A25,1)<左(B25,1)
'1.0 '-1 =代码(A27) =代码(左(B27,1)) =@A:A<@B:B =左(A27,1)<左(B27,1)
'0.0 '-1 =代码(A28) =代码(左(B28,1)) =@A:A<@B:B =左(A28,1)<左(B28,1)
'2.0 '-1 =代码(A29) =代码(左(B29,1)) =@A:A<@B:B =左(A29,1)<左(B29,1)
'-2.0 '-1 =代码(A30) =代码(左(B30,1)) =@A:A<@B:B =左(A30,1)<左(B30,1)
'1E+0 '-1E+0 =代码(A32) =代码(左(B32,1)) =@A:A<@B:B =左(A32,1)<左(B32,1)
'0E+0 '-1E+0 =代码(A33) =代码(左(B33,1)) =@A:A<@B:B =左(A33,1)<左(B33,1)
'2E+0 '-1E+0 =代码(A34) =代码(左(B34,1)) =@A:A<@B:B =左(A34,1)<左(B34,1)
'-2E+0 '-1E+0 =代码(A35) =代码(左(B35,1)) =@A:A<@B:B =左(A35,1)<左(B35,1)

推荐阅读