我如何获得数据透视表列字段的成员以自然顺序而不是按字母顺序显示?

我被教会如何将datestring值从我想要的(“2015年9月”,“2015年10月”等)转换为Excel认为应该是的(“15-Sep”,“15 – “等) 在这里 。

当显示“不好”时,列至less以正确顺序显示(“2015-Sep”,然后是“2015-Oct”)。 现在是“9月15日”和“10月15日”,但是它们是按照“自然”顺序和按字母顺序排列的(“10月15日”,接着是“9月15日”)。

这是一个太典型的情况(特别是在软件开发中非常明显的)解决一个问题导致另一个问题的后面丑陋的后方。

这是我如何创build数据透视表的“月”部分:

var monthField = pvt.PivotFields("MonthYr"); monthField.Orientation = XlPivotFieldOrientation.xlColumnField; 

在解决显示格式问题之前:

在这里输入图像说明

修正显示格式问题后(“15-Sep”现在是“9月15日”等,但是现在几个月没有了):

在这里输入图像说明

我可以“吃我的蛋糕”吗?可以这么说吗? 如果是这样,怎么样?

从阅读评论,这听起来像你需要将您的C#date转换为Exceldate。 在第二条评论中,你提到你可以将值“201509”和“201510”放到excel表格中。

我build议你使用LEFT()RIGHT()函数分开年份和月份,然后使用DATE()函数获取9/1/15和10/1/15的Excel序列号。

下面是我想到的步骤(万圣节快乐!)的截图:

Excel数据透视表中的日期

最后,您现在可以使用公式monthField.NumberFormat = "MMM yy"格式化序列号。 Excel会意识到这是一个date,并按时间顺序sorting。