我已经研究了好几个月了。我只是不能得到natural
(真字母数字)结果。我很震惊,我不能得到他们,因为我已经能够在RPG
自1992年以来与EBCDIC
。
我正在寻找任何解决方案,在SQL,VBS或简单的Excel或访问。以下是我掌握的数据:
299-8,
3410L-87,
3410L-88,
420-A20,
420-A21,
420A-40,
4357-3,
AN3H10A,
K117GM-8,
K129-1,
K129-15,
K271B-200L,
K271B-38L,
K271D-200EL,
KD1051,
KD1062,
KD1092,
KD1108,
KD1108,
M8000-3,
MS24665-1,
SK271B-200L,
SAYA4008
我正在寻找的顺序是真正的字母数字顺序如下:
AN3H10A,
KD1051,
KD1062,
KD1092,
KD1108,
KD1108,
K117GM-8,
K129-1,
K129-15,
MS24665-1,
M8000-3,
SAYA4008,
SK271B-200L
库存是7800记录,所以我有一些问题的处理能力以及。
任何帮助将不胜感激。
杰夫
5条答案
按热度按时间sg24os4d1#
在原生Excel中,您可以添加多个排序列以返回每个字符的ASCII代码,但如果字符是数字,则在代码中添加一个大数字(例如,如果字符是数字,则在代码中添加一个大数字)。g 1000)。
然后对每个帮助列进行排序,包括表中的第一列,但不包括排序中的列。
公式:
排序对话框:
结果:
您可以使用VBA实现类似的算法,也可能使用SQL。我不知道VBS或Access。
niknxzdl2#
您可以尝试使用format来左填充字符串,按以下顺序
q35jwt9p3#
添加排序列:
w46czmvw4#
假设你的数据在“A”列。如果你把这个公式放在列“B”
=IFERROR(IF(LEFT(A1,1)+1>0,"ZZZZZZZ "&A1,A1),A1)
中,它会自动在所有数值前面加上Z,这样当你对A-Z排序时,它们会自然地出现在所有字母值后面。稍后你可以找到并替换那个有趣的ZZZZZ字符串。..puruo6ea5#
有许多方法,但在本例中,最少的工作量可能是构建两个分隔符(-)的列。
然后“填充”右对齐的结果(空格或0),然后对两列进行排序。
所以在查询生成器中,我们有这样的:
当我们运行上面的原始查询时,我们会得到这样的结果:
因此,现在在查询生成器中,只需对第一个派生列进行排序,然后对第二个派生列进行排序。
例如:
运行查询,我们得到以下结果:
编辑:
看看你想要的结果,看起来上面的排序是错误的。我们必须向右填充0。
第二次尝试:
结果如下:
考虑到您的表大小很小,那么上面的查询应该执行得很好。