Google Sheets多工作表按月汇总收支的SUMPRODUCT公式问题求助
解决Google Sheets按月汇总收支并自动更新的问题
修正SUMPRODUCT公式(适合手动维护Month列的场景)
你的原公式报错主要有三个原因:全列引用导致计算冗余、未匹配年份会混淆跨年月度数据、可能存在日期格式不兼容问题。修正后的公式如下:
1. 计算月度总收入(Summary!B2)
=SUMPRODUCT((TEXT(Income!$A$2:$A,"mmmm yyyy")=$A2)*(Income!$C$2:$C))
- 用
$A$2:$A替代全列引用,跳过表头减少计算量; - 新增
yyyy匹配年份,避免不同年份的同一月份数据被错误汇总; - 绝对锁定Income的列引用,下拉公式时不会偏移。
2. 计算月度总支出(Summary!C2)
=SUMPRODUCT((TEXT(Expenditure!$A$2:$A,"mmmm yyyy")=$A2)*(Expenditure!$C$2:$C))
逻辑和总收入公式一致,仅切换数据源工作表。
3. 计算净利润/亏损(Summary!D2)
=B2-C2
直接用当月总收入减总支出即可,下拉后自动适配各行。
注意:需确保Summary的A列(Month)格式为mmmm yyyy(如January 2024),且Income/Expenditure的Date列是真实日期格式(选中列后通过「格式>数字>日期」确认,避免文本型日期导致TEXT函数失效)。
更优动态方案(自动生成所有月份,无需手动维护)
如果希望新增收支数据后,Summary自动生成对应月份的统计结果,推荐使用QUERY函数实现全自动化,无需手动添加Month行:
在Summary的A1单元格输入以下公式(覆盖原有表头,自动生成完整统计表格):
=QUERY( { QUERY(Income!A2:C, "SELECT TEXT(A,'mmmm yyyy'), SUM(C) WHERE A IS NOT NULL GROUP BY TEXT(A,'mmmm yyyy') LABEL TEXT(A,'mmmm yyyy') 'Month', SUM(C) 'Total Income'"), QUERY(Expenditure!A2:C, "SELECT SUM(C) WHERE A IS NOT NULL GROUP BY TEXT(A,'mmmm yyyy') LABEL SUM(C) 'Total Expenses'") }, "SELECT Col1, Col2, Col4, Col2-Col4 WHERE Col1 IS NOT NULL LABEL Col1 'Month', Col2 'Total Income', Col4 'Total Expenses', Col2-Col4 'Net Profit/Loss'", 1 )
- 内层两个
QUERY分别从Income和Expenditure表按月年分组汇总收支; - 外层
QUERY合并数据并计算净利润,自动过滤空值,新增数据后实时更新; - 自动生成表头和所有有数据的月度行,无需手动维护Month列。
内容的提问来源于stack exchange,提问作者Emmanuel Morrison Affel
相关产品推荐
相关产品推荐

