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

How can I get the members of a PivotTable column field to display in natural order, rather than alphabetically?

有人教我如何将日期字符串值从我想要的值("Sep 2015"、"Oct 2015" 等)转换为 Excel 认为的值应该是(“9 月 15 日”、“10 月 15 日”等).

当它显示时 "badly," 列至少以正确的顺序显示(“2015 年 9 月”后跟“2015 年 10 月”)。现在它们是 "Sep 15" 和 "Oct 15",但它们的显示顺序是 "natural",而是按字母顺序("Oct 15" 后跟 "Sep 15")。

这是一个太典型的场景(在软件开发中尤其明显),一个问题的解决导致另一个问题后退。

这就是我创建数据透视表 "month" 部分的方式:

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

修复显示格式问题前:

修复显示格式问题后(“15-Sep”现在是 "Sep 15",等等,但月份现在乱序了):

我可以"have my cake and eat it, too"这么说吗?如果可以,怎么做?

通过阅读评论,听起来您需要将 C# 日期转换为 excel 日期。在第二条评论中,您提到您能够将值“201509”和“201510”添加到 excel sheet 上。

我建议你使用LEFT()RIGHT()函数分离年月,然后使用DATE()函数得到9/的Excel序号1/15 和 10/1/15。

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

最后,您现在可以使用公式 monthField.NumberFormat = "MMM yy" 格式化序列号。 Excel 将意识到这是一个日期并按时间顺序对其进行排序。