如何按任务条件对多行的当前及后续月份列进行动态求和
高效实现任务跨月份累计工时求和方案
针对你需要统计各任务在指定月份及后续所有月份的总计划工时(不区分用户)的需求,以下提供两种无需冗余辅助列、易维护的Excel公式方案,适配不同版本:
假设数据源结构
先明确基础区域定义(可根据实际表格调整):
- 数据源:任务列
$B$2:$B$100,月份表头$C$1:$AF$1(36个月份),工时数据$C$2:$AF$100 - 统计表格:任务列
$H$2:$H$20(需统计的任务清单),月份表头$I$1:$AP$1(对应36个月份)
方案1:Excel 365/2021 动态数组(一键自动填充)
在统计表格的首个数据单元格(如I2)输入以下公式,回车后公式会自动溢出填充所有任务行和月份列:
=BYROW($H$2:$H$20,LAMBDA(task, BYCOL($I$1:$AP$1,LAMBDA(month, SUM(FILTER($C$2:$AF$100, $B$2:$B$100=task, 0)*($C$1:$AF$1>=month)) )) ))
逻辑说明
BYROW遍历统计表格的每个任务,BYCOL遍历每个统计月份FILTER筛选出当前任务的所有工时数据行- 用
$C$1:$AF$1>=month生成布尔数组,标记当前及后续月份的位置 - 筛选后的工时数组与布尔数组相乘,仅保留符合条件的工时,最后SUM累加所有用户的对应工时
方案2:兼容旧版Excel(2019及更早)的SUMPRODUCT方案
在统计表格的I2单元格输入公式,下拉填充所有任务行,右拉填充所有月份列:
=SUMPRODUCT(($B$2:$B$100=$H2)*($C$1:$AF$1>=I$1)*$C$2:$AF$100)
逻辑说明
($B$2:$B$100=$H2):匹配当前行的目标任务($C$1:$AF$1>=I$1):匹配当前列及之后的月份- 两个条件生成的布尔数组(符合条件为1,否则为0)与工时数据相乘,仅保留符合要求的工时,SUMPRODUCT自动累加所有结果
后续维护要点
- 新增任务:只需在统计表格的任务列(
$H$2:$H$20)添加新任务名称,365版本公式自动扩展;旧版本下拉公式即可 - 新增月份:在数据源添加新月份列后,更新公式中的区域范围(如将
$AF$1改为新列标),365版本自动适配,旧版本右拉公式即可
内容的提问来源于stack exchange,提问作者J4N
相关产品推荐
相关产品推荐

