• ベストアンサー

EXCEL 選択したセルの位置を基準に数式を入力したい

こんにちは タイトルが意味不明かも知れません。説明いたします。 たとえば、あるセルを対象として(たとえば、D100とします)、「D100よりも上30個の平均を計算し、その値をE100に表示」、ということはできますでしょうか。つまり、E100を選択し、その隣のD100から上30個のセル、D71からD100までの平均を計算せよ、という数式となりますが、いかがでしょうか。手動で選択ではなく、数式で指令することなのですが、どうでしょうか。 宜しくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

average関数はセル範囲を引数として要求します。 セル範囲は、エクセル関数では、OFFSET関数しかありません(あまり選択の余地はない。普通は関数は、1つの値!を結果として返すのですが、この関数だけは異色と思います。) 例 A1:A10 1 2 3 4 5 6 7 8 9 10 A10から上に5行の平均 =AVERAGE(OFFSET(A10,-4,0,5,1)) 隔たりなので5-1の4、且つ上にさかのぼるときはマイナスをつけることが出来る、ので上記の式になる。 A10(第1引数)から上に(第2引数のマイナス)5行の10-4(第2引数)=第6行から5行(第4引数。1列=第5引数)のセルの数値の平均と言う意味になる。

その他の回答 (5)

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.6

こんな使用法は如何でしょうか? 例えばJ1へ E100 と入力 結果を表示したいセルへ =AVERAGE(OFFSET(INDIRECT(J1),,-1,-30,1))

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.5

#4です。小細工して(#4のデータ例で) =AVERAGE(INDIRECT("A10:A"&ROW(A10)-4)) デモできました。4は5-1から来ます。 10番から5つ前は10-5+1(小学校で習う式)。

noname#204879
noname#204879
回答No.3

単に =AVERAGE(D71:D100) で駄目ならその理由が知りたいです。

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.2

こんな感じでしょうか? E列の何処かへ =SUM(OFFSET(INDIRECT("E"&ROW()),,-1,-30,1))/30 例えば、E100へ上記の式を使用した場合、D71:D100の平均値を表示します。 Excelのヘルプで、OFFSET関数や、INDIRECT関数を確認して下さい。 使用例としてF列に1が入力されていれば、D列のその行を含む上へ30のセルの平均値を表示させ、F列に1が入力されていなければ、空を表示させるには。 =IF(INDIRECT("F"&ROW())=1,SUM(OFFSET(INDIRECT("E"&ROW()),,-1,-30,1))/30,"")

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

OFFSET関数を使ってはいかがですか ただし、 >D100よりも上30個 と表現していますが >D71からD100までの と仰っていることから 「D100から上30個」の誤りと勝手に判断させていただきます  =OFFSET(基準,行数,列数 ,高さ,幅) と指定します("高さ"と"幅"は省略可能)  OFFSET(D100,-(30-1),0,30,1) など(応用が利くように "30" という数字を残しています) これは高さと幅を指定しているため範囲を指定する表記になっていますので、 関数式にそのままイコールを付けるとエラーになります 平均であればこの関数式を AVERAGE関数に渡します  =AVERAGE(OFFSET(D100,-(30-1),0,30,1)) また、INDIRECT関数を使っても同様なことが可能です ヘルプなどを参照して自力で数式を作ってみてください

関連するQ&A