2

私は 2 週間にわたって、子供たちの成績の平均を Excel で記録しています。私が今コードを持っている方法

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

2 週間分のデータがない場合、エラーが返されます。これを行うことでこれを回避する方法を見つけました

=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,....

これを行うためのより良い方法があると確信しています。

4

1 に答える 1

1

コメントで指摘されているように(ある程度の知識がなければ決定的な答えを出すのは難しい)、たとえば、数値データがどこから始まるのか(E4またはE5)を判断するのは簡単ではありませんか?

まず、最後の30行のデータを平均化するように見える元の数式を単純化できます(30行が2週間のデータにどのように相当するかはわかりません)-次のようにするだけで実行できます。

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

ここで、COUNTA( '1'!D:D)が<29のときにエラーが発生すると想定します。したがって、関数が数値<29を返す場合、すべてのデータを平均化するIf関数を追加するだけです。

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

その式は、レイアウトの詳細に対応するために若干の調整が必要な場合がありますが、一般的なアプローチは有効です。

于 2013-01-15T00:51:12.580 に答える