- 締切済み
エクセルのテクニック教えてください
データの整理をしているのですが、エクセルが初心者同様に苦手なもので知恵をお借りしたいです。 例えばシート1でA1~1000までのセルにデータが入っていたとして、A1~100、A101~200、A201~300・・・と、各列100個ずつ平均を出していきたいのですが、一回一回100個ずつのセルを選んでいくしかないのでしょうか? 平均はシート2に出したいと考えています。 データの量が膨大でして、実際にはA10~2800→DL10~2800までびっしり入っているので、データを100個ずつに横に並び替えるとかはできそうにありません。。。 一回法則を作ってドラッグでバーっとやる方法があれば是非教えていただきたいのですが。。 分かりにくい質問の仕方で申し訳ありません。意味不明でしたら聞いていただけると助かります。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
初心者ということなので、よくわからないかも知れませんが、 配列数式という仕組みを使うと簡単にできます 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で割った行を対象にするように、ずれて行きます。
- chukenkenkou
- ベストアンサー率43% (833/1926)
#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))
- mshr1962
- ベストアンサー率39% (7417/18945)
=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))
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
=AVERAGE(OFFSET($A$1,100*(ROW()-1),0,100,1)) みたいな感じでやればいいです。 =AVERAGE(OFFSET(基準の位置,相対的な範囲の始まり縦位置,相対的な範囲の横位置,縦範囲サイズ,横範囲サイズ))
- chukenkenkou
- ベストアンサー率43% (833/1926)
>シート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個ずつに横に並び替えるとかはできそうにありません 何のために、そういう作業が必要なのでしょうか? >一回法則を作ってドラッグでバーっとやる方法があれば是非教えていただきたいのですが 手順が決まった作業なら、一連の作業を「マクロ登録」することで、自動化は可能です。
- mu2011
- ベストアンサー率38% (1910/4994)
例えば、以下の方法で如何でしょうか。 シート2の任意列1行目に=AVERAGE(INDIRECT("sheet1!a"&(ROW()-ROW(Sheet1!$A$1))*100+1):INDIRECT("sheet1!a"&ROW()*100))として下方向にコピーして下さい。
お礼
解答ありがとうございます! chukenkenkouさんのやりかたが一番自分なりに解釈できそうなのですが、マクロ登録というのが良く分かりません。 「100個のセルずつ平均するのを繰り返す」とかっていう登録ができるということですよね? その登録方法というのは難しいのでしょうか? よろしければ教えていただきたいのですが。
補足
補足なのですが、A1~A100の平均、A101~A200の平均を自分でだしたあと、この二つを選択した状態から下にドラッグしてもA201~A300ではなくA102~A201の平均が求まってしまうのです。 なので、よろしければ100ずつの平均にできるようなマクロ登録(?を教えて頂きたいのです。 無知でもうしわけありません、よろしくお願いします。