ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの一定範囲ごとの平均を出したい

  • mixiチェック
  • このエントリーをはてなブックマークに追加
いつもお世話になっております。
よろしくお願いいたします。

今、A列にデータがずらっと入っている状態なのですが、
そのデータから、任意の数ずつの平均値を出したいのです。
例えば、10個ずつの平均をB列に入れるなら、

B1にはA1からA10までの平均値
B2にはA11からA20までの平均値
B3にはA21からA30までの平均値
……

といったような感じです。
ただそれだけのことなのですが、やり方がよくわからず困っております。
アドバイス頂ければ嬉しく思います。
よろしくお願いいたします。
Excelのバージョンは2000です。

コメント(12)

えりじあむさんに便乗させていただきます。
(同じような作業をしているので)

Sheet1のA列に1年分の日付が入っており、
同じシートのB列にA列の日付に対応する数値が入っています。

Sheet1のA列の日付を月ごとにまとめた平均値を、
Sheet2にまとめたいと考えています。

イメージとしては、

Sheet1
A列    B列
04/01    10   
04/02    50
 ・      ・     
 ・      ・
 ・      ・
04/30    25
05/01    30
05/02    15
 ・      ・
 ・      ・
 ・      ・
05/31    40


Sheet2
A列    B列  

04月    28(Seet1の4月平均値)
05月    26(Seet1の5月平均値)

という感じです。

Excelのバージョンは2000です。
よろしくお願いいたします。
えりじあむさんへ
 先日私が教えてもらった、OFFSET関数とINDIRECT関数で出来そうですので、以下を参照されてみて下さい。

http://mixi.jp/view_bbs.pl?id=13143401&comm_id=2106
 
10個ずつの平均を出すとします。
まず、B1に
=AVERAGE(A1:A10)
と入れます。
次にB1からB10を選択し、下までオートフィル。
(画像1参照。A列が途中に空白がなく下まで続いているなら矢印をダブルクリック。隙間があるなら左クリック押しっぱなしでA列のデータが続く限り下まで引っ張る)
そのままコピーして、同じ範囲に値を貼り付け。
B列をクリックして1列挿入。
D1に1、D11に2と入れる。
D1からD20を選択し、オートフィル。
(画像2参照。さっきと違ってダブルクリックはしないで下まで引っ張る)
昇順で並べ替え(画像3のボタンをクリック)。
“並べ替えの前に”というウィンドウが出ると思うので、“選択範囲を拡張する”を選択して並べ替え。
B列を削除。
D列の数字を削除。

で、出来上がり。
>> えりじあむさん

使用するシート関数:
AVERAGE(),OFFSET()(または INDIRECT()),ROW()

でいけそうです。
・平均を求める際の開始行=(ROW()-1)*10+1
・平均を求める際の終了行=ROW()*10

>> 1: Yoidore さん
Sheet2のA列は手で修正するのでしょうか?
手で修正するのであれば、

Sheet2のB列に以下の考え方で作れると思います。
SUMIF( Sheet1の対象月日付 ) / COUNTIF( Sheet1の対象月日付 )
※ここまででも えりじあむさんの例とはかなり違う内容です^^

Sheet2のA列をSheet1の内容から自動で生成するのであれば、
まったく別の手法(結構面倒)が必要になります。
別トピックを作られたほうがいいかもしれません。
>>しpへrさん

ありがとうございます。
とりあえず別トピックに立て直してみます。
Yoidoreさん>
どちらのシートもB列を選択して1列挿入。
sheet1のB列には(A1からデータが入っているとして、B1に)、
=MONTH(A1)
と入れて下にコピーします。
sheet2のB列には、隣のセルが4月なら4、5月なら5と数字を入れます。
sheet2に(1列目が4月だとしてC1に)、
=SUMIF(Sheet1!B:B,B1,Sheet1!C:C)/COUNTIF(Sheet1!B:B,B1)
と入れます。
下にコピーして出来上がりです。
皆様、レスありがとうございます。

>>JOKER-25さま
レスありがとうございます。
しかしすみません、画像が一切表示されていないのですが…
JOKER-25さまの環境では表示されておられるのでしょうか?

>>しpへrさま
レスありがとうございます。
しかし、B列に
=AVERAGE((ROW()-1)*10+1:ROW()*10)
と入力するだけではできないですよね…
「A列」という指定がないので…
ROW()を使ったこれらの文字列が、開始行、終了行を指定できるのは何とか理解できたのですが、
A列の、という指定を入れるにはどのように書いたらよいのでしょうか?
大変恥ずかしいのですが、そこの部分からよくわからないのです。
もう少しご教授いただけないでしょうか?

>>MASEさま
ありがとうございます。
参考にしてみます。

皆様、ご迷惑をおかけして大変申し訳ありません。
2: のMASEさんの提示されたトピックに、
解決させるために必要となる関数(下のどちらか)
OFFSET()
INDIRECT()
のわかりやすい解説があります。

あと、HELPを参照してこれらの関数の意味を理解すると、
今ある情報で作れようになると思いますよ。





蛇足。
INDIRECT()の例で行くと

B1=AVERAGE(A1:A10)

にしたいのだから
B1=AVERAGE(INDIRECT("A1:A10",TRUE))

参照先の部分を自動で算出するには
B1=AVERAGE(INDIRECT("A"&((ROW()-1)*10+1)&":A"&(ROW()*10),TRUE))
となります。
>>しpへr様
レスありがとうございます。
今、携帯電話でログインしており、確認することができませんので、
明日確認してみます。
えりじあむさん>
画像をつけるのを忘れてました。
申し訳ないです。

もう解決してしまったかもしれませんが、前回送るはずの画像をつけます。
>>しpへr様
確認してみたところ、希望の結果が得られました。
どうもありがとうございました。
関数の意味もそうなのですが、引数の中に書かれている「"」や「&」の使い方がよく分からなくて躓いておりました。
いろいろ調べて勉強していきたいと思います。

>>JOKER-25様
どうもありがとうございます。
ちょっと難しそうですが、挑戦してみます。

---
あと、昨日その後再びいろいろ調べまして、
=AVERAGE(OFFSET($A$1,(ROW(A1)-1)*10,,10))
といったような書き方でもできることが分かりましたので、
私と同じような問題を抱えている方がいらっしゃった時のために書きとめておきます。

このたびは皆様にたいへんご迷惑をおかけし申し訳ありませんでした。
今後は関数の使い方について勉強していきたいと思います。
ありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。