• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AVERAGEIFS関数の引数が可変の場合)

AVERAGEIFS関数の引数が可変の場合

このQ&Aのポイント
  • AVERAGEIFS関数を使って可変の引数を計算する方法について教えてください。
  • indirect関数とaddress関数、match関数を使用して引数の合計対象範囲を可変に設定していますが、戻り値が#VALUEになっています。
  • 同じ計算をaverage関数で行う場合は正しく計算されています。どうすれば正しい戻り値が表示されるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

ちなみに「可変範囲で計算したい」のが主のご質問だったのでしたら, INDEX関数 OFFSET関数 INDIRECT関数 などが利用できます。 計算例: =AVERAGEIFS(INDEX(データ!F:F,MATCH(DATE(データ!$D$1,$A3,1),データ!$D:$D,0)):INDEX(データ!F:F,MATCH(DATE(データ!$D$1,$A3+1,0),データ!$D:$D,0)) ,INDEX(データ!C:C,MATCH(DATE(データ!$D$1,$A3,1),データ!$D:$D,0)):INDEX(データ!C:C,MATCH(DATE(データ!$D$1,$A3+1,0),データ!$D:$D,0)),0) 計算例: B1に対象範囲の先頭行 =MATCH(DATE(データ!$D$1,$A3,1),データ!$D:$D,0) B2に対象範囲の終わる行 =MATCH(DATE(データ!$D$1,$A3+1,0),データ!$D:$D,0) B3に =AVERAGEIFS(INDIRECT("データ!F"&B1&":F"&B2),OFFSET(データ!C1,B1-1,0,B2-B1+1,1),0) #どれを使ってもリクツは大体同じです(ダラダラ長くなるのも一緒です)が,ご質問で掲示された数式みたいにわざわざ「セル番地の文字列」を経由するよりは,もうちょっとだけすっきりできると思います。 #もちろん,回答1のようにしてしまえば遙かに簡単なので,まずそう回答したわけですが。

wakarimahenn
質問者

お礼

ありがとうございます。返信が遅れてすみません。 わざわざ2通りの回答までいただいてありがたいです。 条件範囲と合計対象範囲が違っていたことを気づいていませんでした。 おかげさまで無事式を完成できました。 ご教授ありがとうございました。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

条件範囲も同じ範囲としなければいけませんので次のような式にすればよいでしょう。 =AVERAGEIFS(INDIRECT(ADDRESS(MATCH(DATE(データ!$D$1,$A3,1),データ!$D:$D,0),6,,,"Sheet2")):INDIRECT(ADDRESS(MATCH(DATE(データ!$D$1,$A3+1,0),データ!$D:$D,0),6,,,"データ")),INDIRECT(ADDRESS(MATCH(DATE(データ!$D$1,$A3,1),データ!$D:$D,0),3,,,"データ")):INDIRECT(ADDRESS(MATCH(DATE(データ!$D$1,$A3+1,0),データ!$D:$D,0),3,,,"データ")),0)

wakarimahenn
質問者

お礼

ありがとうございます。 条件範囲が間違っていました。 おかげさまで無事、式が完成しました。 ご教授ありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

関数のヘルプから抜粋: AVERAGEIFS では、各検索条件範囲に含まれるセルの個数と形状は、合計対象範囲と必ず一致している必要があります。 という条件を満たしていないので,エラーになります。 計算例:ただしD列が日付の昇順等で整列されているとして =AVERAGEIFS(データ!F:F,データ!D:D,">="&DATE(データ!$D$1,$A3,1),データ!D:D,"<="&DATE(データ!$D$1,$A3+1,0),データ!C:C,0)