在Excel中对字母数字值进行sorting

我使用PHPExcel将一些数据导出到Excel。

我最初根据需要对PHP中的字母数字字符列表进行sorting(请参见下面的左侧)。

但是,导出到Excel时,我们的客户希望使用Excel的sorting来sorting数据,这将导致sorting如右下所示(按字母顺序排列,AZ)

有什么办法可以解决这个问题吗? 也许使用公式来显示单元格中的一个值,但给单元格不同的值(用于sorting)?

还是自定义单元格格式?

作为最后的手段,我计划在开始时引入一个ID列,以便可以通过对ID列进行sorting来始终返回到初始sorting,但是如果可能的话,我宁愿不使用此解决scheme。

Initial Sort Excel Sort 2586 2586 2587 2587 2587-1 2590 2587-2 2592 2590 2595 2590-1 2587-1 2590-2 2587-2 2590-3 2590-1 2590-4 2590-10 2590-5 2590-11 2590-6 2590-2 2590-7 2590-3 2590-8 2590-4 2590-9 2590-5 2590-10 2590-6 2590-11 2590-7 2592 2590-8 2595 2590-9 

如果你在每一行的前面加一个撇号,它的sorting如下:

 2586 2587 2587-1 2587-2 2590 2590-1 2590-10 2590-11 2590-2 2590-3 2590-4 2590-5 2590-6 2590-7 2590-8 2590-9 2592 2595 

这是你想要的,对吧?

Excel将根据自己的规则进行sorting,格式不会改变。 您可以在ID列以外的不同列上sorting; 这些列可以被隐藏,button触发的sorting; 或者其他一些方式,使最终用户容易。

以下是一种做事方式的例子:

您可以设置两个辅助列,将ID的左侧和右侧部分表示为数字。

在列B中使用您的ID:

 C2: =--(LEFT(B2,FIND("-",B2&"-")-1)) D2: =IFERROR(--MID(B2,FIND("-",B2)+1,99),0) 

并填写。

由于Excel对空白进行sorting的方式,您需要在可能为空的第二部分的字段中放置一个零

然后select表格,然后在列C上sorting,然后在列D上sorting。

完成后,删除或隐藏C:D列

Sort之前

在这里输入图像说明

sorting对话框

在这里输入图像说明

sorting后

在这里输入图像说明