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

Google Sheets公式优化:新增D列日期校验与未统计日期计数需求

解决方案

可以使用以下单个动态公式实现需求,支持F列及后续列的动态扩展,直接在C列首行输入即可自动填充整列:

=BYROW(A2:INDEX(A:A,COUNTA(A:A)),LAMBDA(r,
  LET(
    startDate,INDEX(r,1,1),
    endDate,INDEX(r,1,2),
    checkDate,INDEX(r,1,4),
    headers,FILTER(1:1,COLUMN(1:1)>=COLUMN(F1)),
    rowVals,INDEX(2:INDEX(2:2,COUNTA(A:A)),ROW(r)-1,0),
    // 原统计:表头日期在A-B区间且对应值为"Yes"的数量
    originalCount,SUM(N((headers>=startDate)*(headers<=endDate)*(rowVals="Yes"))),
    // 新增统计:D列日期在A-B区间且对应列值为"No"的数量
    addCount,N((checkDate>=startDate)*(checkDate<=endDate)*(XLOOKUP(checkDate,headers,rowVals,"")="No")),
    originalCount+addCount
  )
))

公式说明

  1. 动态行范围:A2:INDEX(A:A,COUNTA(A:A))自动识别A列有数据的所有行,避免计算空行
  2. 变量定义(LET函数):将重复引用的单元格/范围定义为变量,简化公式结构:
    • startDate/endDate:当前行的项目开始/截止日期(A/B列)
    • checkDate:当前行需要校验的D列日期
    • headers:动态获取F列及以后的所有表头日期(支持列扩展)
    • rowVals:当前行F列及以后的所有对应值
  3. 原统计逻辑:通过布尔运算筛选出「表头在A-B区间」且「值为Yes」的单元格,用N()将布尔结果转为1/0后求和
  4. 新增统计逻辑:先判断D列日期是否在A-B区间,再用XLOOKUP匹配该日期对应的列值,若为"No"则计数1,否则0
  5. 结果合并:将原统计与新增统计的结果相加,得到最终预期值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:02:07