使用CHOOSECOLS嵌套AVERAGEIFS实现溢出平均值计算遇阻求助
解决AVERAGEIFS嵌套CHOOSECOLS处理溢出数组失效的问题
可行解决方案
方案1:用INDEX替代CHOOSECOLS获取单元格引用
用INDEX获取溢出数组的整列单元格引用,替代CHOOSECOLS,就能让AVERAGEIFS正常工作并返回溢出结果:
英文环境公式:
=AVERAGEIFS(INDEX(A1#, ,2), INDEX(A1#, ,1), G1#)
西班牙文环境(参数分隔符为;):
=PROMEDIO.SI.CONJUNTO(INDICE(A1#;;2); INDICE(A1#;;1); G1#)
方案2:用BYROW+AVERAGEIF遍历计算
如果需要更灵活的数组逻辑,可通过BYROW遍历唯一值数组,逐个计算对应平均值:
英文环境公式:
=BYROW(G1#, LAMBDA(x, AVERAGEIF(CHOOSECOLS(A1#,1), x, CHOOSECOLS(A1#,2))))
西班牙文环境:
=PORFILA(G1#; LAMBDA(x; PROMEDIO.SI(ELEGIRCOLS(A1#;1); x; ELEGIRCOLS(A1#;2))))
失效原因说明
AVERAGEIFS对参数类型有硬性要求:要计算的区域和条件区域必须是单元格区域引用,而CHOOSECOLS返回的是内存中的动态数组常量,并非单元格引用,因此函数无法正确识别匹配关系,导致无法生成溢出结果。而INDEX(A1#, ,列号)可以返回原溢出数组对应的整列单元格引用,完全符合AVERAGEIFS的参数要求。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

