重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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

A 回答 (6件)

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引数)のセルの数値の平均と言う意味になる。
    • good
    • 0

こんな使用法は如何でしょうか?


例えばJ1へ E100 と入力
結果を表示したいセルへ =AVERAGE(OFFSET(INDIRECT(J1),,-1,-30,1))
    • good
    • 0

#4です。

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

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

    • good
    • 0

こんな感じでしょうか?


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,"")
    • good
    • 0

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関数を使っても同様なことが可能です
ヘルプなどを参照して自力で数式を作ってみてください
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!