使用非字母数字字符sorting的范围的意外顺序

当我使用Excel或某些VBA( Range.Sort )对列表进行sorting时,出现意外的结果。 当文本被sorting时,连字符似乎被忽略:

用Excelsorting的列表

 align-content align-items alignment-baseline << Should be after "align-self" align-self animation-delay 

与自由办公室sorting相同的列表

 align-content align-items align-self alignment-baseline animation-delay 

该文档不提供有关此行为的任何信息:

https://support.office.com/en-gb/article/Sort-data-in-a-range-or-table-62d0b95d-2a90-4610-a6ae-2e545c4a4654?ui=en-US&rs=en-GB&ad= GB #__ toc246836970

https://msdn.microsoft.com/en-us/library/office/ff840646.aspx

那么这个行为背后有什么规则?

有没有一种方法可以像人们所做的那样(如自由职业办公室那样)对列表进行sorting?

Excel忽略了连字符,除非这是两个单词之间的唯一区别。

一个解决办法是创build一个“助手列”,用点代替连字符 (代码45)(代码46)。 sorting在帮手列上

 =SUBSTITUTE(A1,"-",".") 

我读过一些地方,默认的sorting顺序有一个序列:

  • 撇号
  • 连字符号
  • 空间

与前两个一般忽略

既然如此,用空格replace连字符可能更合乎逻辑。