如何在Excel中的if语句中指定第一个包含数据的单元格

我在Excel中保持了平均2个星期的平均成绩。 现在我有代码的方式

AVERAGE(OFFSET('1'!E4,COUNTA('1'!D:D)-29,):OFFSET('1'!E4,COUNTA('1'!D:D),)) 

它会返回一个错误,如果我没有2周的数据。 我通过这样做find了解决办法

 =IFERROR(AVERAGE(OFFSET('1'!E4,COUNTA('1'!D:D)-29,):OFFSET('1'!E4,COUNTA('1'!D:D),)),IFERROR(AVERAGE(OFFSET('1'!E4,COUNTA('1'!D:D)-28,):OFFSET('1'!E4,COUNTA('1'!D:D),)),IFERROR(AVERAGE(OFFSET('1'!E4,COUNTA('1'!D:D)-27,.... 

我肯定有一个更好的方法来做到这一点,将不胜感激。

正如在评论中指出的那样 – 在没有更多知识的情况下很难给出明确的答案 – 例如,数字数据开始的位置(E4或E5)不容易说明?

首先,你可以简化你的原始公式,它似乎是AVERAGE最后30行数据(不知道30行如何等于2周的数据) – 你可以做到这一点只是:

=AVERAGE(OFFSET('1'!E4,COUNTA('1'!D:D)-29,0,30))

现在我假设当COUNTA('1'!D:D)是<29时出现错误,所以你可以简单地添加一个If函数,如果该函数返回一个数字<29即AVERAGES所有数据

=IF(COUNTA('1'!D:D)<29,AVERAGE('1'!E4:E33),AVERAGE(OFFSET('1'!E4,COUNTA('1'!D:D)-29,0,30)))

该公式可能需要一些小的调整,以满足您的布局的具体细节,但一般的方法是有效的