Google Sheets定位同级列最后非空单元格自动统计子任务数量
解决方案
你可以不用手动给子任务补填task_id,直接用Google Sheets内置的SCAN函数先批量识别每个子任务所属的父级task_id,再嵌套统计逻辑即可,以下是两种常用实现方式:
方案1:直接在右侧统计列生成结果(无需新增辅助列)
假设你的左侧表A列是task_id(仅主任务行有值)、B列是subtask内容(子任务行有值、主任务行空),右侧表D列是待统计的task_id列表,在E2单元格输入下面的数组公式即可自动生成所有行的统计结果:
=ARRAYFORMULA(IF(ISBLANK(D2:D),, COUNTIF( SCAN(,A2:A,LAMBDA(acc,cur,IF(cur<>"",cur,acc))), D2:D )-1 ))
公式逻辑说明:
SCAN函数会从A列第一行开始遍历,遇到非空的task_id就更新当前记录值,遇到空值就延用之前记录的task_id,相当于自动给所有子任务行匹配上了对应的父级task_id- 最后统计每个目标task_id出现的次数后减1,就是排除主任务行本身的子任务数量
方案2:先自动补全所属task_id(方便后续其他计算)
如果之后还有其他基于子任务所属task_id的计算需求,可以先在A列旁边插入新的辅助列(比如C列),在C2输入以下公式自动填充所有行的所属task_id:
=ARRAYFORMULA(SCAN(,A2:A,LAMBDA(acc,cur,IF(cur<>"",cur,acc))))
之后统计的时候直接用你之前的COUNTIFS逻辑引用C列即可,不用手动填任何task_id。
内容的提问来源于stack exchange,提问作者Anil
相关产品推荐
相关产品推荐

