如何基于Level列计算包含前序层级的Value列累积平均值?
计算各等级及前序层级物品的Value累积平均值
场景说明
需要计算每个等级可使用的所有物品(当前等级+所有低于该等级的物品)的Value平均值,而非仅单等级物品的平均值。
直接计算每行对应等级的累积平均值
假设你的Level数据在A列,Value数据在B列,使用以下公式可批量计算每一行对应的累积平均值:
=ArrayFormula(IF(A2:A="","",AVERAGEIF(A:A,"<="&A2:A,B:B)))
ArrayFormula:实现批量计算,无需手动下拉填充公式AVERAGEIF(A:A,"<="&A2:A,B:B):筛选所有等级≤当前行等级的物品,计算它们的Value平均值IF(A2:A="","",...):空行自动不显示结果
按唯一等级分组展示累积平均值
如果需要按不重复的Level分组展示对应的累积平均值,使用以下组合公式:
=QUERY(ArrayFormula({A2:A,AVERAGEIF(A:A,"<="&A2:A,B:B)}),"SELECT Col1, AVG(Col2) WHERE Col1 IS NOT NULL GROUP BY Col1 ORDER BY Col1",1)
- 先通过
ArrayFormula给每行生成对应的累积平均值,形成包含Level和累积值的临时数组 - 再用
QUERY按Level分组(同一等级的累积值完全相同,AVG(Col2)仅用于提取该值),并按等级排序
注意事项
- 确保A列的Level为数值格式,避免字符串导致的筛选逻辑错误
- 若使用Excel,无需
ArrayFormula:新版Excel支持动态数组自动溢出;旧版需按Ctrl+Shift+Enter触发数组计算
内容的提问来源于stack exchange,提问作者Granola
相关产品推荐
相关产品推荐

