如何使用macros在另一列中根据同一月份在一列中汇总数据

我正在使用Excel 2007中的macros进行工作。 我正在处理很多数据,并且需要根据同一个月的数据汇总来自两行或更多行的数据。 然而,月份列以date表示。

例如,我有一系列的数据

AB 2/10/2008 2 2/10/2008 3 4/10/2008 3 5/11/2008 4 5/11/2008 5 

我希望结果显示在列C和D中,如下所示

 CD Oct/08 8 Nov/08 9 

如果有人能帮助我,我非常感激。

问候,

Tifu

  ABCDEF 1 10/ 1/2008 24106 1 Oct-08 24106 8 2 10/31/2008 24106 7 Nov-08 24107 11 3 11/ 1/2008 24107 8 Dec-08 24108 6 4 11/30/2008 24107 3 5 12/ 1/2008 24108 2 6 12/ 2/2008 24108 4 B1 =MONTH(A1)+YEAR(A1)*12 E1 =MONTH(D1)+YEAR(D1)*12 F1 =SUMIF(B$1:B$6,CONCATENATE("=",E1),C$1:C$6) 

我不得不克服两个问题来解决这个问题。 首先,SUMIF只能做直接的比较,它不能在源位置上运行一个函数(范围函数除外,date和时间函数不是这样),所以我不得不添加B列。 E列是可选的,它可以作为F中公式的一部分来实现,但是为了说明的目的,我将它独立出来。 其次,SUMIF需要一个描述比较的string参数,所以我build立了必要的string(F1 =“24106”)。

使用数组函数:C1:

 =date(2008,small(month($A$1:$A$10),1),1) 

C2:

 =date(2008,small(month($A$1:$A$10),2),1) 

右键单击这些单元格并将其格式设置为mmm / yy

D1:

 =sum(if(month($C1)=month($A$1:$A$10),($B$1:$B$10),0)) 

写完这个公式后一定要按ctrl-shift-enter。 然后根据需要复制粘贴。

如果您对VBA不熟悉,那么首先使用数据菜单下的小计function(即通过Excel的界面),通过录制macros来做您想做的事情。

一旦macros被logging下来,你可以看看生成的VBA代码,并改变它以适应你的需要。

这应该可以使用常规的Excel公式:

  • 提取date的月份(一些月份function)
  • 然后做一个条件总和(函数sumwhen(?))像这样:

    (A:B,ReferenceDate,B:B)(参考date= C2 C3等)

(我所有的都是德语excel,并且函数名也被翻译了,所以我的函数名可能是off的,也许有人可以用英文excel来检查,如果有必要的话可以更新。