Google Sheets如何用SUMIFS结合月份与当前年份汇总捐款?
Google Sheets 按当前年份+月份汇总捐款金额解决方案
方法一:利用日期区间匹配(推荐,不受区域语言影响)
直接构造当前年份对应月份的起止日期,用SUMIFS限定日期范围求和,公式如下(假设汇总表中D2为目标月份名称,如January):
=SUMIFS(Donation[Amount], Donation[Date], ">="&DATE(YEAR(TODAY()), MONTH(DATEVALUE(D2&" 1")), 1), Donation[Date], "<="&EOMONTH(DATE(YEAR(TODAY()), MONTH(DATEVALUE(D2&" 1")), 1), 0))
- 逻辑说明:
DATEVALUE(D2&" 1")将月份名称转换为对应日期(如January 1转为日期值),再用MONTH()提取月份数字DATE(YEAR(TODAY()), ..., 1)生成当前年份下该月的第一天EOMONTH(..., 0)生成当前年份下该月的最后一天SUMIFS筛选日期在该区间内的记录,求和对应捐款金额
方法二:用SUMPRODUCT处理双数组条件
如果坚持用月份名称和年份文本匹配,可改用SUMPRODUCT处理数组条件,规避SUMIFS的区域限制问题:
=SUMPRODUCT( --(TEXT(Donation[Date], "YYYY")=TEXT(TODAY(), "YYYY")), --(TEXT(Donation[Date], "MMMM")=D2), Donation[Amount] )
- 逻辑说明:
TEXT(Donation[Date], "YYYY")提取每条记录的年份文本,与当前年份文本匹配TEXT(Donation[Date], "MMMM")提取每条记录的月份名称文本,与D2的月份匹配--将布尔匹配结果转换为1/0,三个数组相乘后求和,仅同时满足两个条件的金额会被累加
为什么之前的SUMIFS写法失效?
SUMIFS要求条件区域为单元格区域,直接嵌套ARRAYFORMULA+TEXT生成的数组时,容易因格式匹配、区域语言设置(如月份名称的本地化显示)导致条件不匹配,而上述两种方法要么用日期数值区间(更精准),要么用SUMPRODUCT原生支持数组运算,避免了这类问题。
内容的提问来源于stack exchange,提问作者Scott K
相关产品推荐
相关产品推荐

