
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
すでに3名の回答者が回答しておられて、No.1さんにより、考え方も丁寧に解説されていますので、さまざまな解決方法があると思います。
No.2さんが配列数式を使用しない数式をお示しになっていますが、配列数式の回答、配列数式でない回答の両方をお示しします。
ご質問者の説明に基づき、添付画像のようなデータがあるとします。
※データがない日は「---」と入力されているものとします。
まず、配列数式を使用するとすれば、SUM関数とIF関数を組合わせた数式として、B10に、
{=SUM(IF(($A$2:$A$9>=LARGE(($A$2:$A$9)*ISNUMBER(B2:B9),3)),B2:B9,0))/3}
<{}を除いた数式を入力し、Ctrl+Shift+Enterで確定させる>という数式が考えられます。これを、右方向へオートフィル等でコピーします。この数式が最も短いかも知れません。
数式中に「3」が2回登場しますが、これは直近3回の「3」ですので、直近〇回の回数を記述するものとします。
さらに、IF関数を使用せず、SUM関数のみを使用した配列数式として、B10に以下の数式も考えられます。
{=SUM(($A$2:$A$9>=LARGE(($A$2:$A$9)*ISNUMBER(B$2:B$9),3))*SUBSTITUTE(B$2:B$9,"-","0"))/3}
一方、配列数式を使用しない方式としてSUMPRODUCT関数を用いた数式として、B10に
=SUMPRODUCT(($A$2:$A$9>=LARGE(INDEX(($A$2:$A$9)*ISNUMBER(B2:B9),0),3))*SUBSTITUTE(B2:B9,"-","0"))/3
という数式も考えられます。
No.1さんも「エラー対策は何もしていません。 」とおっしゃていますし、No.2さんの回答、No.3さんの回答も「日付が昇順でなかったら」という対策はとられていないようです。
上記の3つの数式は一応「日付が昇順でなくても」直近3回の平均を計算するようにしたつもりです。

銀鱗さん、fujillinさん、mike_gさん、goomaniaさん
丁寧なご回答有難うございました。私は農作業でバタバタしていて、質問をしたまま、ゆっくりPCに向かう時間が取れず、皆様へのお礼が遅くなり大変申し訳ありませんでした。これから皆様から頂いたご回答をじっくり読ませて頂き勉強したいと思っています。お陰さまで、解決方法がありそうだと分かり大変うれしく思っています。遅まきながら、ひとまずお礼を申し上げます。
No.3
- 回答日時:
添付図参照(Excel 2019)
次式を入力したセル B12 を右方&下方にオートフィル
=INDEX(B$2:B$9,LARGE(IF(ISNUMBER(B$2:B$9),ROW(B$2:B$9)),$A12)-1)
【お断わり】上式は必ず配列(CSE)数式として入力のこと
式 =AVERAGE(B12:B14) を入力したセル B10 を右方にオートフィル
オ・シ・マ・イ

No.2
- 回答日時:
こんにちは
既に模範解答が出ていますけれど・・・
>直近の3つ(N個)のセルの平均値~
個数を可変にしたいのかもと想像しました。
こんな感じではいかがでしょうか?
※ 以下は3つの場合。(「3」の部分を変えれば対象個数が変わります)
=AVERAGE(OFFSET(B1,LARGE(INDEX(ISNUMBER(B2:B9)*ROW(B2:B9),),3)-1,,10-LARGE(INDEX(ISNUMBER(B2:B9)*ROW(B2:B9),),3)))
※ 見ればわかるように、作業セルを1つ使えば、より簡単な式になります。
※ 数値が指定数(=3つ(N個))存在しない場合は、エラーになりますのでご注意。
(その場合には存在する値の平均でよいのなら、式の追加で可能です。)
No.1
- 回答日時:
=AVERAGE(INDEX(B2:B9,MATCH(LARGE(IF(B2:B9="",0,ROW(B2:B9)),1),IF(B2:B9="",0,ROW(B2:B9)),0)),INDEX(B2:B9,MATCH(LARGE(IF(B2:B9="",0,ROW(B2:B9)),2),IF(B2:B9="",0,ROW(B2:B9)),0)),INDEX(B2:B9,MATCH(LARGE(IF(B2:B9="",0,ROW(B2:B9)),3),IF(B2:B9="",0,ROW(B2:B9)),0)))
こんなかな。
もっとスマートなやり方があるかもしれませんが、
説明をするなら基本を押さえる必要があるので、
この方法を採用しました。
Ctrl+Shift+Enterで数式を確定させ【配列数式】にします。
確定後に数式全体が「{=~}」のように{}で囲われたらOK。
Enterだけではエラーになります。
・・・
とても面倒なことをやってます。
ですので、このくらい長い数式になる。
・値が入力されているセルの行番号を取得。
・その番号の上位3つに対応するセルを取得。
・平均を取る。
この手順を行っていますが、読み取れますか?
読み取れないのであれば、諦めてください。
AVERAGE関数に3つの値を与えて平均を出しています。
それぞれの値はINDEX関数で範囲の中の下から1番目2番目3番目のデータを拾い出しています。
INDEX関数はMATCH関数で得られた値を使って配列から値を取得します。
MATCH関数はLARGE関数で1番目、2番目、3番目に大きい値が配列の何番目にあるかを返します。
LARGE関数は配列の中の指定された順位の値を返します。
IF関数はデータが無ければ0を、データがあればROW関数の値を配列の値として返します。
※ このROW関数が【配列数式】で、配列数式を使わない場合は作業列になります。
=AVERAGE(
INDEX(
B2:B9
,MATCH(
LARGE(IF(B2:B9="",0,ROW(B2:B9)),1)
,IF(B2:B9="",0,ROW(B2:B9))
,0))
,INDEX(
B2:B9
,MATCH(
LARGE(IF(B2:B9="",0,ROW(B2:B9)),2)
,IF(B2:B9="",0,ROW(B2:B9))
,0))
,INDEX(
B2:B9
,MATCH(
LARGE(IF(B2:B9="",0,ROW(B2:B9)),3)
,IF(B2:B9="",0,ROW(B2:B9))
,0)))
質問ではデータが無い箇所を「---」としているようですので
IF(B2:B9="",0,ROW(B2:B9))
を
IF(B2:B9="---",0,ROW(B2:B9))
としても良いでしょう。
なお、エラー対策は何もしていません。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelで全クラスのランキング表を作成したい 4 2022/05/24 15:28
- Excel(エクセル) 皆様、御力をお貸し下さい。。。 スプレッドシートで関数を組みたいのですが、上手く組めません。 ▼抽出 3 2023/02/04 15:49
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) エクセルで日付が入っているセルを一定の法則に従って違うセルに表示したい 2 2022/04/04 17:16
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/28 08:59
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) 【Excel質問】 「本日の日付」から指定条件を満たす営業日経過後の日数を表示させる関数式 3 2022/06/06 23:28
- Excel(エクセル) エクセルで指定範囲にある名前と重複した場合に入力できないようにしたい 1 2023/07/13 09:58
- Excel(エクセル) エクセルのフッタやヘッダーについて 3 2023/02/04 09:45
このQ&Aを見た人はこんなQ&Aも見ています
-
直近の5個の平均を求めたい
Excel(エクセル)
-
Excel関数 直近3回分の出庫平均を表示したい
Excel(エクセル)
-
エクセルで、直近10件のみ抽出。
Excel(エクセル)
-
-
4
エクセルで直近1ヶ月と3ヶ月の平均を求める
Excel(エクセル)
-
5
EXCELで直近の日付を抽出する関数
Excel(エクセル)
-
6
空白セルもある”〇”データの直近3回の平均値を出す
Excel(エクセル)
-
7
Excelで縦1列に並んだ大量の数字から、一定間隔で平均値を出したい。
Excel(エクセル)
-
8
Excelで指定した日付から過去の最も近い日付(指定した日付も含む)を下から検索する方法
Visual Basic(VBA)
-
9
エクセルでの6ヶ月平均の出し方
会計ソフト・業務用ソフト
-
10
Excelで空白セル直前のセルデータ値を取得したい
Visual Basic(VBA)
-
11
エクセル-過去6カ月分の合計を関数で計算したい
その他(Microsoft Office)
-
12
エクセル関数について
その他(コンピューター・テクノロジー)
-
13
EXCELで2つの数値のうち大きい方を採択する数式
Excel(エクセル)
-
14
入力したところまでを自動的に平均を出す
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について
-
【マクロ】元データと同じお客...
-
エクセルのリストについて
-
エクセルのVBAで集計をしたい
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
【マクロ】左のブックと右のブ...
-
【マクロ】【配列】3つのシー...
-
他のシートの検索
-
vba テキストボックスとリフト...
-
ページが変なふうに切れる
-
【マクロ】変数に入れるコード...
-
【マクロ】オートフィルターの...
-
【マクロ】別ファイルへマクロ...
-
エクセルの複雑なシフト表から...
-
エクセルシートの見出しの文字...
-
【マクロ】列を折りたたみ非表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報