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

时间:2016-10-07 16:28:33

标签: excel vba excel-vba

当我使用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-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所做的那样)?

1 个答案:

答案 0 :(得分:4)

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

一个解决方法是创建一个&#34;帮助列&#34;,用 dot 替换连字符(代码45)(代码46)。 在辅助列上排序

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

我已经在某处找到了默认排序顺序的序列:

  • 撇号
  • 连字符
  • 空间

前两个通常被忽略

在这种情况下,用空格替换连字符可能更符合逻辑。