我在excel 2007中使用宏来完成我的工作。我正在处理许多数据,我需要根据同一个月对同一列中的2行或更多行进行汇总。但是月份列表示为日期。
例如,我有一系列数据
A B
2/10/2008 2
2/10/2008 3
4/10/2008 3
5/11/2008 4
5/11/2008 5
我希望结果显示在C和D列中,如下所示
C D
Oct/08 8
Nov/08 9
如果有人能帮助我,我非常感激。
的问候,
Tifu
答案 0 :(得分:4)
A B C D E F
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只能进行直接比较,它不能在源位置运行一个函数(范围函数除外,日期和时间函数都没有),所以我不得不添加B列。 E列是可选的,它可以作为F中公式的一部分实现,但为了说明的目的,我将其保留为独立。其次,SUMIF采用描述比较的字符串参数,因此我在运行中构建了必要的字符串(对于F1来说是“= 24106”)。
答案 1 :(得分:1)
使用数组函数: 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。 然后根据需要将其粘贴下来。
答案 2 :(得分:0)
如果您不熟悉VBA,我会首先在使用“数据”菜单下的“小计”功能(即通过Excel界面)执行您想要执行的操作时录制宏。
记录宏后,您可以查看生成的VBA代码,并根据需要对其进行更改。
答案 3 :(得分:0)
这应该可以使用常规的excel公式:
然后像这样做一个条件和(函数sumwhen(?)):
= SumWhen(A:B,ReferenceDate,B:B) (参考日期= C2 C3等)
(我所有的都是德语excel,函数名也被翻译了,所以我的函数名可能会被关闭。也许有人可以查看英语excel并在必要时更新。)