簡體   English   中英

Excel 如何比較字符串?

[英]How does Excel compare strings?

期望 Excel 按字典順序運行,但似乎不是。

盡管按字典順序在“1”之前有“-”,但“1”<“-1”的計算結果為 TRUE。

這也消除了 Excel 將兩個字符串作為數字進行比較的可能性。

或者,"1"<"-" 評估 FALSE,而 "1"<"1" 也評估 FALSE。

'-' 是 45 (ASCII)

'1' 是 49 (ASCII)

這似乎是一個錯誤,或者至少是一個(未記錄的?)功能

更多示例(紅色表示意外結果)
筆記:

  • 10.00<-10.010.0<-10.0結果表明字符串長度在某些情況下很重要
  • VBA 沒有表現出這種行為

在此處輸入圖片說明

如果你想嘗試

一種 代碼(A) 代碼(B) 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM