在Excel中对字母数字值进行排序

时间:2017-08-31 13:51:54

标签: excel sorting phpexcel

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

我最初按照我想要的方式对PHP中的字母数字字符列表进行排序(见左下方)。

但是当导出到Excel时,我们的客户希望使用Excel的排序来对数据进行排序,从而导致右下方的排序(按字母顺序排列,A-Z)

我们有什么方法可以解决这个问题吗?也许使用公式在单元格中显示一个值,但为单元格赋予不同的值(用于排序)?

或自定义单元格格式?

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

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

2 个答案:

答案 0 :(得分:0)

如果在每行前面放置一个撇号,则按如下方式排序:

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

这是你想要的,对吧?

答案 1 :(得分:0)

Excel将根据自己的规则进行排序,格式化不会改变事物。您可以在不同于ID列的列上进行排序;这些列可以隐藏,按钮触发排序;或者其他一些方法可以让最终用户轻松使用。

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

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

使用B列中的ID:

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

并填写。

由于Excel排序空白的方式,您需要在第二部分的字段中放置零,这可能是空白

然后选择表,并在C列上排序,然后在D列上排序。

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

排序前

enter image description here

排序对话框

enter image description here

排序后

enter image description here