跨列的值的平均频率 excel

Average Frequency of a Value across column excel

我正在计算每行 0 出现在 1 之间的平均频率。 我过去曾结合使用频率和列函数来计算平均条纹(1 或 0)和最大条纹(1 和 0)。

例如,第 2、3、4 和 6 行被省略,因为没有出现 1-0-1 的序列。第 5、7 和 8 行的序列为 1-0-1。对于这些,我不确定如何计算每行 1 之间 0 的平均数。

任何帮助将不胜感激,并提前致谢!

干杯

例如,您可以使用 =COUNTIF( $B5:$S5, 1 ) 来计算 1,使用 =COUNT( $B5:$S5 ) 来计算数字。您还可以查看 FREQUENCY 函数。
如果这不能回答您的问题,请尝试提供更小的示例以及您期望的结果数字。

您可以使用数组公式发挥创意。对于您的示例,尝试在单元格 T2 中输入这个怪物公式作为数组公式 (Ctrl+Shift+Enter) 并向下填充。

=IFERROR(   2   *   AVERAGE(   IF(($B2:$R2=0)*($C2:$S2=1)*COLUMN($B2:$R2)*(COLUMN($B2:$R2) > COLUMN($B2)+MATCH(1,$B2:$S2,0)-1) - ($B2:$R2=1)*($C2:$S2=0)*COLUMN($B2:$R2)*(COLUMN($B2:$R2) < MAX(COLUMN($B2:$S2)*($B2:$S2=1)))  <>  0,  ($B2:$R2=0)*($C2:$S2=1)*COLUMN($B2:$R2)*(COLUMN($B2:$R2) > COLUMN($B2)+MATCH(1,$B2:$S2,0)-1) - ($B2:$R2=1)*($C2:$S2=0)*COLUMN($B2:$R2)*(COLUMN($B2:$R2) < MAX(COLUMN($B2:$S2)*($B2:$S2=1)))  )   ),   0)

无需赘述,这就是正在发生的事情:

  • ($B2:$R2=0)*($C2:$S2=1)*COLUMN($B2:$R2) - 此 returns 行从 0 过渡到 1(连续结束)的列号数组。类似地,- ($B2:$R2=1)*($C2:$S2=0)*COLUMN($B2:$R2) 将行从 1 过渡到 0(连续开始)的列号添加到数组中,只是减去它以给出负列号。
  • 对每对正列数和负列数求和将得出条纹长度。总和除以条纹数得出平均条纹长度。更简单地说,所有正负列数的平均值的 2 倍将给出相同的结果。
  • 行中的前导零和尾随零是一个问题,因此添加了一个额外的掩码以忽略它们。 *(COLUMN($B2:$R2) > COLUMN($B2)+MATCH(1,$B2:$S2,0)-1) 忽略前导零,*(COLUMN($B2:$R2) < MAX(COLUMN($B2:$S2)*($B2:$S2=1))) 忽略尾随零。
  • 所以零不包括在平均计算中,使用了 AVERAGE(IF(exp <> 0, exp)),不幸的是,这使公式的大小加倍。
  • 最后,如果不存在条纹,则会发生错误,因此使用 IFERROR(exp, 0)