Excel 如何修改此公式以在所有情况下生成结果,而不是给出错误?

Excel 如何修改此公式以在所有情况下生成结果,而不是给出错误?,excel,Excel,我有电子表格记录学生的考试成绩。结果输入到每名学生的一行结果列中,我想创建最后三个结果的运行平均值。然而,一些学生缺少数据。一个例子如下: E F G H I J K L M N O P Q R S T U V ... Z 4.0 3.0 5.0 5.0 3.5 3.0 2.5 4.0 3.0 2.5 3.0 5.0 4.5 4.0 3.5 4.5 3.5 3.0 1.5

我有电子表格记录学生的考试成绩。结果输入到每名学生的一行结果列中,我想创建最后三个结果的运行平均值。然而,一些学生缺少数据。一个例子如下:

 E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V ... Z
4.0 3.0 5.0 5.0     3.5
3.0 2.5 4.0 3.0     2.5
3.0     5.0 4.5     4.0
3.5     4.5         3.5
3.0 1.5 2.5 2.5     2.0
1.5 2.0 2.0 1.0     2.0
4.5 3.0 3.5 4.5     3.5
5.0 3.5 5.0 5.0     5.0
我创建了一个公式,当学生至少有三个数据块时,该公式有效,但当只输入一个或两个数据块时,该公式失败。公式是:

=AVERAGE(LOOKUP(LARGE(IF(ISNUMBER(E3:Z3),COLUMN(E3:Z3)),{1,2,3}),COLUMN(E3:Z3),E3:Z3))
这是作为数组公式输入的。我意识到我可以做一个IF检查错误,并加入额外的代码来处理两条数据,然后是一条,但是有没有更快的方法

我确实尝试过使用聚合,但没有得到任何答案。

将{1,2,3}替换为ROWINDIRECT1:&MIN3,count3:Z3


您可以为您的列添加标签吗?数据列从E列到Z列。我已经更新了数据来表示这一点。您在哪里输入公式?对不起,每列包含一个0.1到12.0之间的文本“分数”-这允许我们比较不同的测试。如果一个单元格为空,那是因为学生没有该测试的分数。我想计算一行中最后几项的平均值。我所做的忽略了空格,但当一个学生只有两个分数,比如表中的第四行,我想你可能知道!谢谢。那真是太聪明了。
=AVERAGE(LOOKUP(LARGE(IF(ISNUMBER(E3:Z3),COLUMN(E3:Z3)),ROW(INDIRECT("1:" & MIN(3,COUNT(E3:Z3))))),COLUMN(E3:Z3),E3:Z3))