求助:Power Apps Canvas中计算集合多列(Dip1-Dip7)平均值的方法
解决Power Apps中多列数据总平均值计算问题
核心思路
要计算Coll_Records集合中Dip1至Dip7所有有效数值的总平均值,需先将多列数据转换为单列表格,过滤掉无效值(空值、非数值)后,再进行平均值计算。Power Apps原生的Average多列用法是计算每条记录的多列均值再取平均,并非所有值的总平均,这是之前结果不准确的原因。
有效公式方案
方案1:直接使用Average计算
通过AddColumns将每条记录的7个Dip字段转为一个内嵌表,再用Ungroup展开为单列表,过滤有效数值后计算平均值:
Average( Filter( Ungroup( AddColumns( Coll_Records, "DipValues", Table( {Val: Dip1}, {Val: Dip2}, {Val: Dip3}, {Val: Dip4}, {Val: Dip5}, {Val: Dip6}, {Val: Dip7} ) ), "DipValues" ), !IsBlank(Val) && IsNumeric(Val) ), Val )
方案2:Sum除以CountRows(手动计算逻辑)
如果需要分开统计总和与有效数据量,可使用以下公式,逻辑更直观:
// 计算所有有效数值的总和 Sum( Filter( Ungroup( AddColumns( Coll_Records, "DipValues", Table( {Val: Dip1}, {Val: Dip2}, {Val: Dip3}, {Val: Dip4}, {Val: Dip5}, {Val: Dip6}, {Val: Dip7} ) ), "DipValues" ), !IsBlank(Val) && IsNumeric(Val) ), Val ) // 除以有效数值的总数量 / CountRows( Filter( Ungroup( AddColumns( Coll_Records, "DipValues", Table( {Val: Dip1}, {Val: Dip2}, {Val: Dip3}, {Val: Dip4}, {Val: Dip5}, {Val: Dip6}, {Val: Dip7} ) ), "DipValues" ), !IsBlank(Val) && IsNumeric(Val) ) )
关键说明
Ungroup函数的作用是将每条记录的内嵌Dip列表展开为独立行,这样所有Dip字段的数值都集中到一列中。Filter中的!IsBlank(Val) && IsNumeric(Val)确保只统计有效数值,排除空值和非数字内容。- 之前使用
Count(Coll_Records, Dip1)仅能统计Dip1列非空的记录数,而非所有Dip1的有效数值数量(每条记录仅一个Dip1值),要统计7列的总有效数,必须先将多列转为单列再用CountRows。
内容的提问来源于stack exchange,提问作者user3599946
相关产品推荐
相关产品推荐

