Google Sheets按组计算RPD(相对百分比差)问题求助
按分组计算Google Sheets中的RPD(相对百分比差)
问题概述
需要基于分组列(字符串顺序不固定),为多行多列数据计算RPD。RPD公式为:=(当前值 - 分组平均值)/分组平均值*100
已实现全局RPD计算,但尝试的ArrayFormula无法正确应用分组条件,最终需处理25列数据。
解决方案
单列分组RPD计算(以B列为例)
使用ARRAYFORMULA结合AVERAGEIF实现数组式分组计算:
=ARRAYFORMULA(IF(A20:A="",, (B20:B - AVERAGEIF(A20:A, A20:A, B20:B))/AVERAGEIF(A20:A, A20:A, B20:B)*100))
IF(A20:A="",, ...):跳过无分组标记的空行AVERAGEIF(A20:A, A20:A, B20:B):动态匹配当前行的分组,计算对应分组的B列平均值- 套入RPD公式完成计算,自动填充整列
多列批量计算(25列,如B-Z列)
使用MAP函数实现逐行逐列的分组计算,更简洁高效:
=MAP(A20:A, B20:Z, LAMBDA(group, val, IF(group="",, (val - AVERAGEIF(A20:A, group, B20:Z))/AVERAGEIF(A20:A, group, B20:Z)*100)))
MAP(A20:A, B20:Z, LAMBDA(group, val, ...)):遍历每一行的分组标记和对应列的值- 逻辑与单列公式一致,自动覆盖B到Z列的所有数据
原尝试公式的问题分析
- Try A:公式中额外将
B20作为AVERAGE的参数,干扰了分组平均值的计算;同时用乘法生成匹配数组的方式,不如AVERAGEIF直接可靠。 - Try B:分母使用了全局范围的
AVERAGE(B20:B34),而非对应分组的平均值,导致RPD计算逻辑错误。
内容的提问来源于stack exchange,提问作者PhilippK
相关产品推荐
相关产品推荐

