You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用原生Excel公式动态按项目汇总指定时段天数?

纯Excel公式实现动态项目天数统计(无需VBA)

针对你需要自动识别新增项目、基于动态时间窗口统计天数的需求,以下是纯Excel公式的实现方案,分两种常见数据场景说明:

场景1:每行对应项目的单个日期记录

假设输入数据结构:

  • A列:项目名称(从A2开始,会动态新增行)
  • B列:对应项目的记录日期
  • D1:统计起始日期(from)
  • E1:统计结束日期(to)

步骤1:生成动态不重复项目列表

在任意空白单元格(比如G2)输入公式:

=UNIQUE(FILTER(A:A, A:A <> ""))

该公式会自动提取A列所有非空的不重复项目,新增项目后列表会自动更新(Excel 365/2021及以上版本支持动态数组自动溢出)。

步骤2:统计每个项目的符合条件天数

在H2单元格输入公式(会自动匹配G列的所有项目并溢出结果):

=BYROW(G2#, LAMBDA(project, COUNTIFS(A:A, project, B:B, ">="&$D$1, B:B, "<="&$E$1)))
  • BYROW遍历动态生成的项目列表
  • COUNTIFS同时匹配项目名称和日期窗口,统计符合条件的记录数(即天数)

旧版本Excel(无动态数组)替代方案:

  1. 选中A列数据,点击「数据」→「高级」筛选,勾选「将筛选结果复制到其他位置」,指定复制到G2,再勾选「选择不重复的记录」,生成固定的不重复项目列表
  2. 在H2输入公式=COUNTIFS(A:A, G2, B:B, ">="&$D$1, B:B, "<="&$E$1),下拉填充所有项目行

场景2:每行对应项目的日期时段(开始/结束日期)

假设输入数据结构:

  • A列:项目名称
  • B列:时段开始日期
  • C列:时段结束日期
  • D1:统计起始日期(from)
  • E1:统计结束日期(to)

步骤1:生成动态不重复项目列表

同场景1,使用=UNIQUE(FILTER(A:A, A:A <> ""))生成项目列表。

步骤2:统计每个项目的有效天数总和

在H2单元格输入公式:

=BYROW(G2#, LAMBDA(project, SUMPRODUCT(
    (A:A=project)*
    (MAX(B:B, $D$1) <= MIN(C:C, $E$1))*
    (MIN(C:C, $E$1) - MAX(B:B, $D$1) + 1)
)))
  • MAX(B:B, $D$1)和MIN(C:C, $E$1)计算单个时段与统计窗口的交集区间
  • 仅当交集区间有效(开始≤结束)时,才计算天数(结束-开始+1)
  • SUMPRODUCT累加该项目所有有效时段的天数总和

旧版本Excel替代方案:
在H2输入公式=SUMPRODUCT((A:A=G2)*(MAX(B:B,$D$1)<=MIN(C:C,$E$1))*(MIN(C:C,$E$1)-MAX(B:B,$D$1)+1)),下拉填充所有项目行。

注意事项

  • 确保from(D1)和to(E1)单元格为日期格式,避免公式识别错误
  • 动态数组公式仅支持Excel 365/2021及以上版本,旧版本需用高级筛选+下拉公式的方式
  • 若数据量较大,建议限制公式的引用范围(比如A2:A1000而非A:A),提升计算效率

内容的提问来源于stack exchange,提问作者zappee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:31:12