Answers:
如果您要计算一个月中的所有值(不管年份如何),Mike Fitzpatrick的答案将非常有效。如果您希望按年获得每个月的计数表(即能够区分2012年11月和2013年11月),则需要更多详细信息。
通过为原始数据使用标准表,您可以在添加值时更新数据透视表,并更新数据透视表。
假设您的数据是有效的Excel日期时间,请为您的范围命名(例如“ Datetime”),然后创建数据透视表。
使用Datetime(或任何您称呼的日期)作为行标签和值。确保“值”功能是“计数”,而不是“求和”。
最后,将您的行标签按月分组,也可以按年分组。
我注意到,在您的样本数据中,您实际上具有相对较大的时间跨度,且具有不规则的时间间隔。虽然其他答案指出了如何单独在Excel中制作图表,但在此我提出了另一种解决方案,可以制作交互式折线图来解决我提到的问题。下图显示了我根据您的描述制作的示例。
我使用Funfun Excel加载项制作了此图表。基本上,此加载项使您可以直接在Excel中使用JavaScript,因此可以利用HighCharts.js或D3.js之类的库来制作交互式图表。在此特定示例中,我使用了HighCharts.js。在此图表中,您可以使用鼠标放大特定时间范围以查看明细编号。如果您有多年的日志,这将非常有用。
返回您的数据。在制作此图表之前,您确实需要计算每个月的频率。这可以通过用JavaScript编写一个小函数来完成。这是一些示例代码。
var frequencyPerMonth = new Object();
var monthLast = 1;
var yearLast = 1970;
for(var i=0;i<data.length;i++){
var monthThis = parseInt(data[i][0].split('/')[0]-1);
var yearThis = parseInt(data[i][0].split('/')[2]);
if(monthThis == monthLast && yearThis == yearLast){
frequencyPerMonth[data[i][0].split('/')[2]+monthThis.toString()] += 1;
}
else{
frequencyPerMonth[data[i][0].split('/')[2]+monthThis.toString()] = 1;
}
monthLast = monthThis;
yearLast = yearThis;
}
Funfun还具有一个在线编辑器,您可以在其中浏览JavaScript代码和结果。您可以在下面的链接中查看如何制作示例图表的详细信息。
https://www.funfun.io/1/#/edit/5a4e0d461010eb73fe125c4e
对在线编辑器中获得的结果满意之后,您可以使用上面的URL轻松地将结果加载到Excel中。但是当然,首先,您需要通过Insert-Office Add-ins将Funfun加载项添加到Excel中。以下是一些屏幕截图,显示了如何将示例加载到Excel中。
披露:我是Funfun的开发人员