Google Sheets按相同ID分组计算相邻日期间隔及总天数实现问题
按ID分组计算日期间隔实现方案
同组相邻日期间隔(C列)
在C2单元格输入以下数组公式,无需手动下拉,会自动填充所有有效行:
={"Days Since Previous Payment";ARRAYFORMULA(IF(B3:B="",,IF(B3:B<>B2:B,,A3:A-A2:A)))}
逻辑:
- 若当前行ID为空则返回空值
- 若当前行ID与上一行ID不同(即该ID组的第一条记录),返回空值
- 同组内直接用当前行日期减去上一行日期,得到间隔天数
同组累计总间隔天数(D列)
在D2单元格输入以下数组公式,自动完成全列计算:
={"累计总间隔天数";SCAN(0,SEQUENCE(ROWS(A3:A)),LAMBDA(acc,idx,IF(idx=1,0,IF(INDEX(B3:B,idx)<>INDEX(B2:B,idx),0,acc+IF(INDEX(A3:A,idx)-INDEX(A2:A,idx)>0,INDEX(A3:A,idx)-INDEX(A2:A,idx),0)))))}
逻辑:
- 通过SCAN迭代函数做累计计算,遇到新ID时自动重置累计值为0
- 同组内累加每一次的相邻间隔,得到当前行对应的累计总间隔
原有逻辑问题说明
你之前的两段代码无法结合的核心问题是间隔计算逻辑没有加入同ID校验规则,只需要在计算日期间差前增加上下行ID一致性判断,即可避免跨组计算的问题。
内容的提问来源于stack exchange,提问作者kueyiar
相关产品推荐
相关产品推荐

