プロが教えるわが家の防犯対策術!

データの整理をしているのですが、エクセルが初心者同様に苦手なもので知恵をお借りしたいです。

例えばシート1でA1~1000までのセルにデータが入っていたとして、A1~100、A101~200、A201~300・・・と、各列100個ずつ平均を出していきたいのですが、一回一回100個ずつのセルを選んでいくしかないのでしょうか?
平均はシート2に出したいと考えています。

データの量が膨大でして、実際にはA10~2800→DL10~2800までびっしり入っているので、データを100個ずつに横に並び替えるとかはできそうにありません。。。
一回法則を作ってドラッグでバーっとやる方法があれば是非教えていただきたいのですが。。

分かりにくい質問の仕方で申し訳ありません。意味不明でしたら聞いていただけると助かります。

A 回答 (6件)

初心者ということなので、よくわからないかも知れませんが、


配列数式という仕組みを使うと簡単にできます
A1:A20に
1
1
1
1
1
2
2
2
2
2
3
3
3
3
3
4
4
4
4
4
とします。わざと簡単にしてあります。
希望はSheet2らしいが簡単のためSheet1の、どこでも良い空き列に(いまG列とする)
=AVERAGE(IF(INT((ROW(A$1:A$100)-1)/5)=ROW()-1,A$1:A$100,""))
と入れて、SHIFT+CTRL+ENTERの3つのキーを同時押しする。
これをG4まで式を複写する(+ハンドルを引っ張る。
G1:G4に
1
2
3
4
が出ます。
質問例の100ごとの場合は5->100に変え、A$1:A$100をA$1:A$2000に変える。10から始まるときは
A$1:A$100)-1をA$1:A$100)-10に、ROW()-1をROW()-10に変えてください。
上記式の意味は、行の番号-1を100で割って、0(すなわち1-100)の時は
その行の数字を対象にし、それ以外は除外して(””)、平均を計算しろということです。0はG列第1行のケース、第2行は行番号2-1=1は、101:200-1を100で割った行を対象にするように、ずれて行きます。
    • good
    • 0

#2回答者です。



「マクロ」について誤解があるようです。
マクロの登録には、以下のような方法があります。

(1)一連の作業を登録
(a)「ツール」→「マクロ」→「新しいマクロの記録」
(b)マクロ名を必要により変更し、OK
(c)一連の操作を行う
  →一連の作業を、一度、行う必要があります
(d)「ツール」→「マクロ」→「記録終了」

(2)(1)で登録した内容を元に、マクロを修正(VBAで記述)

(3)一からVBAで作成

一連の作業の内、一部分を行い、それ以降も行えるようにするには、VBAという言語でプログラミングしなければなりません。

式を一行だけ入力し、コピー&ペーストするだけで自動的に100行ずつ計算できる式は、#1、#4回答者さんの回答で行えます。
何も考えず、式をそのままコピーしてみてください。


↓この式を、何も考えずSheet2に貼り付けてみてください。Sheet1の部分が、シート名です。

=AVERAGE(OFFSET(INDIRECT("Sheet1!A"&((ROW(A1)-1)*100+1)),0,0,100,1))
    • good
    • 0

=AVERAGE(OFFSET(INDIRECT("シート1!A"&((COLUMN(A1)-1)*100+1)),0,0,100,1))


で横にドラッグでコピー
縦方向ならCOLUMN関数の代わりにROW関数を使用してください。

縦横に各列を100行単位で平均なら
=AVERAGE(OFFSET(INDIRECT(ADDRESS((ROW(A1)-1)*100+1,COLUMN(A1),,,"シート1")),0,0,100,1))
    • good
    • 0

=AVERAGE(OFFSET($A$1,100*(ROW()-1),0,100,1))


みたいな感じでやればいいです。
=AVERAGE(OFFSET(基準の位置,相対的な範囲の始まり縦位置,相対的な範囲の横位置,縦範囲サイズ,横範囲サイズ))
    • good
    • 0

>シート1でA1~1000までのセルにデータが入っていたとして、A1~100、A101~200、A201~300・・・と、各列100個ずつ平均を出していきたい


>平均はシート2に出したい

シート2の平均値を入れたいセルに、以下のような式を入れればOKです。

●A1~A100の平均
=AVERAGE(Sheet1!A1:A100)

●A101~A200の平均
=AVERAGE(Sheet1!A101:A200)

>データを100個ずつに横に並び替えるとかはできそうにありません

何のために、そういう作業が必要なのでしょうか?

>一回法則を作ってドラッグでバーっとやる方法があれば是非教えていただきたいのですが

手順が決まった作業なら、一連の作業を「マクロ登録」することで、自動化は可能です。

この回答への補足

補足なのですが、A1~A100の平均、A101~A200の平均を自分でだしたあと、この二つを選択した状態から下にドラッグしてもA201~A300ではなくA102~A201の平均が求まってしまうのです。
なので、よろしければ100ずつの平均にできるようなマクロ登録(?を教えて頂きたいのです。
無知でもうしわけありません、よろしくお願いします。

補足日時:2006/01/05 14:31
    • good
    • 0
この回答へのお礼

解答ありがとうございます!

chukenkenkouさんのやりかたが一番自分なりに解釈できそうなのですが、マクロ登録というのが良く分かりません。

「100個のセルずつ平均するのを繰り返す」とかっていう登録ができるということですよね?
その登録方法というのは難しいのでしょうか?
よろしければ教えていただきたいのですが。

お礼日時:2006/01/05 14:27

例えば、以下の方法で如何でしょうか。


シート2の任意列1行目に=AVERAGE(INDIRECT("sheet1!a"&(ROW()-ROW(Sheet1!$A$1))*100+1):INDIRECT("sheet1!a"&ROW()*100))として下方向にコピーして下さい。
    • good
    • 0

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