小编典典

自然或人为排序

sql

我已经为此工作了几个月。我只是无法获得natural(真实的字母数字)结果。令我震惊的是我无法获得RPG自1992年以来的成就EBCDIC

我正在寻找SQL,VBS或简单的excel或access中的任何解决方案。这是我的数据:

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条记录,因此我在处理能力方面也遇到了一些问题。

任何帮助,将不胜感激。


阅读 255

收藏
2021-04-14

共1个答案

小编典典

在本机Excel中,您可以添加多个排序列以返回每个字符的ASCII代码,但是如果字符是数字,则在代码中添加一个大数字(例如1000)。

然后对每个帮助器列进行排序,包括表中的第一列,但不进行排序。

公式:

=IFERROR(CODE(MID($A1,COLUMNS($A:A),1))+AND(CODE(MID($A1,COLUMNS($A:A),1))>=48,CODE(MID($A1,COLUMNS($A:A),1))<=57)*1000,"")

您可以使用VBA以及可能的SQL来实现类似的算法。我不了解VBS或Access。

2021-04-14