基于日期序列与分类的Google Sheets流动性周度求和问题
周度流动性计算表按分类求和问题
需求
制作周度流动性计算表,按分类统计对应日期序列区间内的各项支出费用。此前实现的是按支出名称统计,现改为按分类求和以精简流动性计算信息。
表格结构
支出数据表(新增分类列)
| 分类 | 支出项 | 金额 | 日期序列 |
|---|---|---|---|
| Category 1 | Expense 1 | 金额 | 日期→ |
| Category 2 | Expense 2 | 金额 | 日期→ |
流动性视图表
| 分类 | 基准日期 | 基准日期+7天 | 基准日期+14天 |
|---|---|---|---|
| Category 1 | 求和值 | 求和值 | 求和值 |
| Category 2 | 求和值 | 求和值 | 求和值 |
问题描述
基于@rockinfreakshow提供的原公式调整适配分类求和需求时遇到异常:原公式使用VLOOKUP,尝试替换为FILTER后,会将分类下所有支出汇总,但仅将结果放置在该分类对应的首个日期序列位置,无法按指定的日期区间匹配并输出对应求和值。
参考原公式
=map(A5:index(A:A,match(,0/(A:A<>""))),lambda(Σ,if(Σ="",,index(if(ifna(xmatch(B4:4,xlookup(torow(xlookup(Σ,'Recurring Costs'!A:A,'Recurring Costs'!C:ZZ),1),4:4,4:4,,-1))),vlookup(Σ,'Recurring Costs'!A:B,2,),)))))
解决方案推荐
通过MAP+SUMIFS组合实现按分类+日期区间的精准求和,公式示例如下(假设支出数据表为'Recurring Costs',流动性视图的分类列从A5开始,日期表头在B4及右侧):
=MAP(A5:INDEX(A:A,MATCH(,0/(A:A<>""))),B4:INDEX(4:4,MATCH(,0/(4:4<>""))),LAMBDA(cat,date,SUMIFS('Recurring Costs'!C:C,'Recurring Costs'!A:A,cat,'Recurring Costs'!D:D,">="&date,'Recurring Costs'!D:D,"<"&date+7)))
公式说明
MAP遍历流动性视图的分类列(A5起)和日期表头(B4起)SUMIFS针对每个分类+日期区间,匹配支出数据表中对应分类、且日期在[date, date+7)范围内的金额求和- 自动适配非空的分类和日期列,无需手动调整范围
内容的提问来源于stack exchange,提问作者Nanna
相关产品推荐
相关产品推荐

