【问题标题】:Average of top 10 values in a row, treating empty cells as ones连续前 10 个值的平均值,将空单元格视为单元格
【发布时间】:2016-01-28 21:03:07
【问题描述】:

假设我在 excel 中有一行包含 n 单元格(实际上是 n=12)。其中一些单元格有数值,有些可能是空的。我想找到行中顶部m 单元格的平均值(实际上是m=10),将空单元格视为包含 1。

(这里的上下文是我想计算一些我给他们的作业评分的学生的平均成绩,这是课程中使用的公式。空单元格对应于未交的作业,但我会喜欢保留 1 级作业和未完成的作业之间的区别。)

【问题讨论】:

  • 请告诉我们您已经尝试过什么,我们很乐意为您提供帮助。
  • “行”中的“顶部”单元格?你能澄清一下吗?
  • 我对 excel 非常陌生;我查过different excel averaging functionsan earlier question on this site,但我看不出这些东西对我有什么帮助。我想我可以做到这一点,找到如何替换 excel 数组(列表?)中的值,对其进行排序,删除较低的两个值;但是excel有很多内置的功能,所以应该有一个“捷径”。
  • @XORLX,我的意思是具有最高(数值)值的单元格。
  • 如果包含数字的单元格数量小于m怎么办?

标签: excel excel-formula


【解决方案1】:

基于A1:L1中的数据,数组公式**

=AVERAGE(LARGE(IF(ISNUMBER(A1:L1),A1:L1,1),{1,2,3,4,5,6,7,8,9,10}))

问候

**数组公式的输入方式与“标准”公式不同。不是只按 ENTER,而是先按住 CTRL 和 SHIFT,然后再按 ENTER。如果操作正确,您会注意到 Excel 在公式周围放置了大括号 {}(尽管不要尝试自己手动插入)。

【讨论】:

  • 这看起来像我想要的,但是当我尝试输入它时,我收到一条错误消息,“您键入的公式包含错误”。我唯一改变的是用 B2:M2 替换 A1:L1 的两个实例(这是相关范围)。
  • 您的系统是否在公式中使用逗号或分号作为参数分隔符?
  • 有趣。你的意思是它接受数组常量中的逗号?我原以为你必须使用“\”或“;” (甚至可能是“.”)。
  • 我把所有的逗号都改成了分号,这样就成功了。此版本的 excel 设置为荷兰语(我想),因此逗号是小数点分隔符。 (所以,不,它也不接受数组常量中的逗号。)
  • 啊,我明白了。你到处改变它们!幸运的你!干杯。
【解决方案2】:

将 12 个项目放在单元格 B1M1 中。在 B2 中输入:

=IF(B1="",1,B1)

然后复制过去。在 A1 中输入:

=LARGE($B$2:$M$2,ROWS($1:1))

然后抄下来。现在要获得前 4 个成绩的平均值,只需选择一个单元格并使用:

=AVERAGE(A1:A4)

要获得前 5 名,请使用=AVERAGE(A1:A5) 等。

【讨论】:

    【解决方案3】:

    嗯,它可以比数组稍微简单一点,只需将平均值分成它的部分、总和和除法。

    =(sum(B2:K2)+countif(B2:K2,0))/10
    

    这是从 B2 行开始的水平分数。您将分数相加,然后计算零(这是您想要添加到总和中的内容)。然后除以 m。

    【讨论】:

    • 这只能解决一半的问题;另一方面是您不想取所有值的平均值,而只想取 12 个中前 10 个值的平均值。
    • 啊,我以为你的意思是字面上的“顶部”10。我假设你已经按降序排序,这样简单的 sum&count 就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    相关资源
    最近更新 更多