Google Sheets 如何使用ArrayFormula获取倒数第二个匹配值计算玩家每日得分
谷歌表格批量计算玩家当日得分的ArrayFormula方案
适用的表格结构:A列为日期,B列为玩家ID,C列为累计得分,表头占第1行,实际数据从第2行开始,D列为待填充的当日得分列。
你可以直接在D2单元格输入以下公式,即可自动批量计算所有行的当日得分,新提交的表单数据也会自动触发计算:
=ARRAYFORMULA(IF(A2:A="",,C2:C-BYROW(SEQUENCE(ROWS(A2:A)),LAMBDA(k,IFERROR(XLOOKUP(INDEX(B:B,k+1),B2:INDEX(B:B,k),C2:INDEX(C:C,k),0,0,-1),0)))))
逻辑说明
- 外层
ARRAYFORMULA实现批量计算,空行自动返回空值,不会出现冗余报错 - 对每一行数据,限定搜索范围为当前行上方的所有历史行
- 用
XLOOKUP的倒序搜索模式(最后一个参数设为-1),快速定位对应玩家最近一次提交的累计得分 - 玩家首次提交时找不到历史记录,默认返回0,此时当日得分等于当前累计得分,完全符合示例规则
适配调整
如果你的表头不在第1行,只需要调整公式里的行号偏移量即可,不需要修改核心逻辑。
内容的提问来源于stack exchange,提问作者Pitt
相关产品推荐
相关产品推荐

