对于我的源数据,我有一列 dd/mm/dddd 格式的日期,以及旁边的一列值。
例如
03/02/2014 5
17/02/2014 4
03/03/2014 5
17/03/2014 4
在摘要表上,我有一排单元格,其中的日期格式为 mmm-yy。
例如
Apr-11 May-11 Jun-11
在每个日期下方的单元格中,我需要输入月份与标题匹配的所有源值的总和。
我知道我可以使用以下方法比较两种日期格式:
MONTH(A1)=MONTH(D4)
如果日期匹配,我可以像这样使用 SUMIF:
=SUMIF(A1:A53, =D4, B1:B53)
我相信 Excel 2007+ 具有 SUMIFS 可能对我有帮助,但不幸的是我必须在 Excel 2003 上执行此操作。
但我不知道如何在 SUMIF 函数中进行月份比较工作。
如果可能的话?
答案1
我找不到以更少步骤完成此操作的方法,所以......
假设
我假设在背面我们只能看到月份年份,日期仍然存储为日期,然后格式化为月份(因此下面实际上显示的是 01/01/2014,而不是 01-2014。
我还假设您的主要日期在 A 列。
问题
主要问题是您需要将主要日期转换为可靠的格式(例如,您需要将 2014 年 5 月以来的每个日期都设为同一天),以便能够准确地比较它们。
公式的第一个语句SUMIF
需要一个范围,而您无法在范围上运行所需的日期转换。您可以使用数组公式来做到这一点,但我没有成功,而且数组公式太深奥了,其他用户很难理解。
其次,您当前正在使用MONTH
使两个值具有可比性。这将起作用,但最终会汇总任何年份的任何月份的任何实例。您需要包括年份以确保结果准确。
最简单的解决方案
我从来都不喜欢依赖“辅助列”的解决方案,但至少现在它是必要的。
在主日期列旁边创建一列(这是您的辅助列,您可以隐藏它或将其分组隐藏以供正常使用),并在第一行单元格中添加以下公式:
=EOMONTH(A2,0)
EOMONTH
(月末)将返回目标日期所在月份的最后一天。后面的数字可用于查找其他月份的最后一天(输入 -1 即可查找上个月的最后一天)
复制此公式,然后转到您想要SUMIF
去的地方。在该单元格中输入以下内容:
=SUMIF($B2:$B10,EOMONTH($D$1,0),$C2:$C10)
其中$B2:$B10
是辅助列的范围,$D$1
是月份值,$C2:$C10
是要求和的值的范围。
现在根据需要重复。
编辑
如果您由于无法使用所需的附加包而无法使用 EOMONTH,那么您可以使用这些公式。
=MONTH($A2)&YEAR($A2)
=SUMIF($B2:$B10,MONTH($D$1)&YEAR($D$1),$C2:$C10)