2017-08-31 183 views
1

我使用PHPExcel将一些数据导出到Excel。在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 
+0

当您导入,导入文本。 Excel在排序时首先放入数字,然后确定排序时他们不选择按数值排序的数字看起来像数字。 –

+0

在右侧似乎是按字母顺序排序。 – Lexib0y

+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 

这是你想要的,对不对?

+0

不,我想要它,因为它最初被排序(如我在左边的列表中看到的那样)。补充说明这个问题。 – Danc

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

Sort对话框

enter image description here

后排序

enter image description here