如何使用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来检查,如果有必要的话可以更新。