多列换行分隔数值的平均值计算公式异常问题求助
多列换行分隔数值平均值计算出错问题
问题现状
我尝试计算多列中按换行符分隔的数值的平均值,使用的公式如下:
={"Average"; {""; IFERROR(ARRAY_CONSTRAIN(MAP(D3:D, E3:E, F3:F, G3:G, H3:H, I3:I, LAMBDA(u, v, w, x, y, z, AVERAGE( AVERAGE(SPLIT(u, CHAR(10))), AVERAGE(SPLIT(v, CHAR(10))), AVERAGE(SPLIT(w, CHAR(10))), AVERAGE(SPLIT(x, CHAR(10))), AVERAGE(SPLIT(y, CHAR(10))), AVERAGE(SPLIT(z, CHAR(10))) )) ), IF(COUNTA(ALBUM_NAME_RNG) = 0, 1, COUNTA(C3:C)), 1))}}
目前该公式可计算平均值,但部分行结果不正确:
- 第一行预期平均值为
3.4697058824,实际得到2.75 - 第二行平均值
1.9383333333计算正确
数据示例
| Album Name | Track Number | Track Name | Acousticness | Danceability | Energy | Instrumentalness | Liveness | Speechiness |
|---|---|---|---|---|---|---|---|---|
| The Dark Side of the Moon | 1 | Speak to Me | 0.00329 0.00139 0.00173 0.00159 0.00197 | 0.358 0.375 0.366 0.371 0.363 | 0.0734 0.0721 0.0685 0.0703 0.0712 | 0.979 0.98 0.981 0.98 0.98 | 0.127 0.131 0.129 0.13 0.128 | 0.0505 0.0501 0.0503 0.0502 0.0504 |
| Random Access Memories | 1 | Give Life Back to Music | 0.0322 0.0318 0.032 0.0319 | 0.694 0.692 0.693 0.693 | 0.815 0.814 0.814 0.814 | 0.000173 0.000172 0.000173 0.000172 | 0.0924 0.0923 0.0923 0.0923 | 0.0764 0.0763 0.0763 0.0763 |
问题原因
原公式的逻辑是先计算每列换行数值的平均值,再对这6个列平均值取平均,这属于「列均值的平均」,而非所有数值的「整体平均值」。当不同列的数值数量不一致(或加权占比不同)时,两种计算方式的结果会出现偏差——这正是第一行结果错误的核心原因。
修正后的公式
将所有列拆分后的数值合并为一个一维数组,再直接计算整体平均值:
={"Average"; {""; IFERROR(ARRAY_CONSTRAIN(MAP(D3:D, E3:E, F3:F, G3:G, H3:H, I3:I, LAMBDA(u, v, w, x, y, z, AVERAGE(TOCOL(SPLIT(u&CHAR(10)&v&CHAR(10)&w&CHAR(10)&x&CHAR(10)&y&CHAR(10)&z, CHAR(10)), 1)) ) ), IF(COUNTA(ALBUM_NAME_RNG) = 0, 1, COUNTA(C3:C)), 1))}}
公式说明
u&CHAR(10)&v&...&z:将当前行6列的换行分隔文本合并为一个整体,用换行符连接SPLIT(..., CHAR(10)):将合并后的文本按换行符拆分为所有数值的数组TOCOL(..., 1):将二维数组转为一维数组,并忽略空值AVERAGE(...):计算所有数值的整体平均值
内容的提问来源于stack exchange,提问作者dan
相关产品推荐
相关产品推荐

