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

mic*_*ael 5 excel vba

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

用 Excel 排序的列表

align-content
align-items
alignment-baseline    << Should be after "align-self"
align-self
animation-delay
Run Code Online (Sandbox Code Playgroud)

使用 Libre Office 排序的相同列表

align-content
align-items
align-self
alignment-baseline
animation-delay
Run Code Online (Sandbox Code Playgroud)

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

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

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

是否可以选择以与人类相同的方式对列表进行排序(如 Libre Office 所做的那样)?

Ron*_*eld 4

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

一种解决方法是创建一个“辅助列”,将hyphen(代码 45)替换为dot(代码 46)。在辅助列上排序

=SUBSTITUTE(A1,"-",".")
Run Code Online (Sandbox Code Playgroud)

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

  • 撇号
  • 连字符
  • 空间

前两个通常被忽略

既然如此,将 the 替换hyphen为 aspace可能更合乎逻辑。