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

Vba 使用非字母数字字符排序的范围的意外顺序,vba,excel,Vba,Excel,使用Excel或某些VBA(Range.sort)对列表进行排序时,我得到了一个意外的结果。在对文本进行排序时,似乎会忽略连字符: 使用Excel排序的列表 align-content align-items alignment-baseline << Should be after "align-self" align-self animation-delay 文档未提供有关此行为的任何信息: 那么这种行为背后有什么规则吗 是否有一个选项可以像人类一样对列表进行排序(就

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

使用Excel排序的列表

align-content
align-items
alignment-baseline    << Should be after "align-self"
align-self
animation-delay
文档未提供有关此行为的任何信息:

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


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

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

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

=SUBSTITUTE(A1,"-",".")
我在某个地方读到,默认排序顺序有一个序列:

  • 撇号
  • 连字符
  • 空间
前两个通常被忽略


这种情况下,用连字符替换一个空间可能更合乎逻辑。

你认为“同一个人的方式”是什么?“共产国际,按人类的意思,我的意思是和办公室一样,这很可能是一个理智的人所能做到的。当被要求对列表进行排序时,我没有看到任何人会将
对齐基线
放在
对齐项目
之后和
对齐自我
之前。通常,排序需要太多的代码,我会记录宏并修改它。你试过这个吗?@Comintern:我想它的意思是根据字符的值按字母顺序排列的,这也是我所期望的。排序顺序显然是错误的;顺序(十进制)ASCII值在Excel输出的第3项和第4项中按错误的顺序排序。@共产国际:嗯,不是。字符的顺序值是相关的,即使在按人工排序时也是如此。前六个字符为
align-
的每个值应按第七个字符确定的字母顺序排列在一起。alpha排序的规范由顺序中字符的值决定,而不是无明显原因任意丢弃字符。我也许可以原谅Word这样做,如果它错误地将连字符视为在右边距拆分的单词,而不是Excel(它没有理由在边距处将单词连字符,也没有这样做)。IIR它还忽略撇号。@Comintern是的,它忽略了。如果这是一个问题,您可以应用类似的修复。根据我所读到的关于默认排序顺序的内容,最好用
空格
=SUBSTITUTE(A1,"-",".")