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



当我用Excel或一些VBA (Range.Sort)排序列表时,我得到了一个意想不到的结果。在对文本进行排序时,连字符似乎被忽略了:

用Excel排序的列表

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

与Libre Office

相同的列表
align-content
align-items
align-self
alignment-baseline
animation-delay

文档没有提供任何关于此行为的信息:

https://support.office.com/en - gb/article/sort -数据- - - - - -或-表- 62 d0b95d范围2 -前- 4610 - a6ae - 2 - e545c4a4654?ui=en us& rs = en-GB&广告= GB # __toc246836970

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

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

是否有一个选项可以像人类一样对列表进行排序(就像Libre Office那样)?

Excel在排序时会忽略连字符,除非这是两个单词之间唯一的区别。

一种解决方法是创建一个"辅助列",用(代码46)替换连字符(代码45)。对辅助列 进行排序
=SUBSTITUTE(A1,"-",".")

我在某处读到默认排序顺序有一个序列:

  • 撇号
  • 字符

前两个通常被忽略

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

最新更新