【发布时间】:2016-10-14 18:54:09
【问题描述】:
我被教导如何将一个日期字符串值从我想要的(“Sep 2015”、“Oct 2015”等)转换为 Excel 认为应该的值(“15-Sep” , "15-Oct" 等)here.
当它显示“糟糕”时,列至少以正确的顺序显示(“2015-Sep”,然后是“2015-Oct”)。不过,现在它们是“Sep 15”和“Oct 15”,但它们的显示顺序不符合“自然”顺序和字母顺序(“Oct 15”后跟“Sep 15”)。
这是太典型的场景(在软件开发中尤其明显),解决一个问题导致另一个问题落后于丑陋的后方。
这就是我创建数据透视表的“月份”部分的方式:
var monthField = pvt.PivotFields("MonthYr");
monthField.Orientation = XlPivotFieldOrientation.xlColumnField;
修复显示格式问题前:
修复显示格式问题后(“15-Sep”现在是“Sep 15”等,但是月份现在乱序了):
可以这么说吗?如果有,怎么做?
【问题讨论】:
-
只是一个建议,您可能只想将列标签单元格的“数字格式”更改为您想要的类型“mmm yy”,而不是在创建数据透视表之前将日期转换为字符串, excel 无法识别为日期并尝试按字母顺序排序。然后你可以让它按正确的时间顺序排序。
-
那是因为excel中的values 201509和201510对应的是9/16/2451 i> 和 9/17/2451。 Excel 像浮点数一样存储日期,整数代表天数,分数代表时间。尝试使用 =DATE(year,month,day) 将您的字符串转换为日期值或阅读这篇关于如何在 VBA 中进行操作的文章 msdn.microsoft.com/en-us/library/aa227484(v=vs.60).aspx 您希望将数据转换为真实日期数据,否则excel不会理解如何按时间顺序排序。在构建数据透视表之前,您需要将其设置为日期格式,然后根据需要格式化列。
-
例如,42248 = 9/1/2015... 而 42278 = 10/1/2015。
-
Excel 可能很痛苦,但我喜欢 excel,你几乎可以用它做任何事情,而且它给了我工作保障,因为其他人都来找我解决 excel 问题 :) 顺便说一句,问题您面临的问题很常见...您希望显示月/年并按其排序,但通常在您完成分析(构建数据透视表)工作之前,您不应该担心格式/显示/标签问题。由于您在构建数据透视表之前转换了它们,因此 excel 不再知道它是一个日期。但如果你将它们转换为 excel 日期类型,那么你可以配置它们在构建表格后的显示方式。
-
这可能有助于解决您的 C# 问题:msdn.microsoft.com/en-us/library/cc165448.aspx string date = "01/08/2008"; DateTime dt = Convert.ToDateTime(date);
标签: excel pivot-table excel-interop date-formatting