2

このようなスプレッドシートがあります

ここに画像の説明を入力してください

データが含まれている前の5つのセルのみを平均したいと思います。これどうやってするの?

リストがより多くのデータを取得すると、次のようになります。

ここに画像の説明を入力してください

セル(A10など)をターゲットにして、そこから5つ戻ることができるようにしたいと思います。繰り返しますが、データが含まれている場合のみです。

したがって、画像の式は次のようになります:(23 + 60 + 53 + 42 + 40)/ 5 = 43.6

それは後退し、黒いスペースをスキップしますが、それでも前の5つを取得します。

4

1 に答える 1

2

次の数式は、値が列 A にあることを前提としています (A:Aそうでない場合はすべての参照を調整します)。

=Average(Filter(Sort(A:A;If(A:A="";0;Row(A:A));false);Row(A:A)<6))

上記の式を理解するには、その部分を個別に貼り付けます (Filter式のない部分を取得した場合は、. などでラップする必要があります) ArrayFormula

=Filter(Sort(A:A;If(A:A="";0;Row(A:A));false);Row(A:A)<6)
=ArrayFormula( Sort(A:A; If(A:A="";0;Row(A:A)); false) )
=ArrayFormula( Row(A:A) )

これらの「補助」数式を、シートにある可能性のある空の列に配置します (最初のセル、たとえばD1) T1

あなたが提案したように、列全体ではない場合、数式全体を配列数式でラップする必要がある場合もあります。

=ArrayFormula( Average(Filter(Sort(K1:K10;If(K1:K10="";0;Row(K1:K10));false);Row(K1:K10)<6)) )

私は当初、Filter式は のように動作すると思ってArrayFormulaいましたが、パラメーターの内部まで「再帰」していないようです。ハンス、が正しく動作するArrayFormulaためには が必要です。IFなぜそれが機能したのかはわかりませんA:A

于 2012-04-26T18:30:13.843 に答える