2016-06-17 7 views
1

私は15点以上あり、0より大きい最新の8点(日付に基づく)を平均したいと思います。ここに例があります:Excelの条件付き平均8つの最も最近のスコア> 0

6/4/15, 
6/18/15, 50 
7/9/15, 46 
7/16/15, 41 
7/23/15, 47 
7/30/15, 47 
8/6/15, 
8/13/15, 46 
8/20/15, 49 
8/27/15, 44 
9/3/15, 
5/5/16, 58 
5/12/16, 53 
5/19/16, 44 
5/26/16, 42 

ありがとうございました!

+0

1日2回または一意の日はありますか? –

+0

毎日1つのスコアしかありません。私のコメントを見る私はTimに以下に追加しました。 – Baldy715

+0

私の答えを参照してください –

答えて

0

あなたは、この配列数式を使用することができます。

=AVERAGE(IF(($A$1:$A$15>=LARGE(IF($B$1:$B$15<>"",$A$1:$A$15),8))*($B$1:$B$15<>""),$B$1:$B$15)) 

は、それが編集モードを終了するときはCtrl-Shiftキーを押しながら入力する代わりにEnterで入力する必要が配列数式であること。正しく実行された場合、Excelは{}を数式の周りに置きます。

enter image description here


我々は式データセットの最後の行を設定するINDEX($B:$B,MATCH(1E+99,$A:$A))を使用して、もう少し動的にすることができます。

配列式は指数関数的に計算されるため、参照のサイズをデータセットの実際のサイズに制限します。

数式は、列Aの数値/日付を持つ最後のセルを見つけて、その行を最後の行として使用します。

だから、一緒にすべてを置く:

=AVERAGE(IF(($A$1:INDEX($A:$A,MATCH(1E+99,$A:$A))>=LARGE(IF($B$1:INDEX($B:$B,MATCH(1E+99,$A:$A))<>"",$A$1:INDEX($A:$A,MATCH(1E+99,$A:$A))),8))*($B$1:INDEX($B:$B,MATCH(1E+99,$A:$A))<>""),$B$1:INDEX($B:$B,MATCH(1E+99,$A:$A)))) 

はCtrl-Shiftキーを押しながら入力します使用して上記の条件がまだ必要とされているので、それはまだ配列数式です。

0

免責事項として、スクリーンキャプチャや実際の数式はありませんが、私たちにはあまり表示されませんでした。スコア(ALT +D + S)によって降順

まず、ソートあなたのデータ。これにより、すべてのゼロエントリが下部に配置されます。あなたはそれらをあなたの平均の一部にしたくないので、あなたは今それらを無視することができます。

次に、日付列に再び順序(ALT + D + S降順日付によって(すなわち、最下部に表示されない)がゼロよりも大きいスコアを有するデータを並べ替えます)。

次に、AVERAGE()機能を使用して、このソート後の最初の8行の平均をとってください。

+0

おそらく、より多くの背景が必要です。私は毎週30人以上の人のゴルフハンディキャップを計算しようとしています。したがって、毎週、プレーヤーがラウンドを逃した場合、彼らは空白を取得します。しかしハンディキャップを計算するためには、最近のラウンド8回を使用する必要があります。だから、各プレイヤーをソートして、お互いの近くにあるゼロを得ることは、実現可能ではないでしょう。私はまだ何も持っていないので、何の式も含んでいませんでした。スコアは単に毎週の入力です。 – Baldy715

関連する問題