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

Excelの関数が苦手で試行錯誤しております。
ぜひ、お知恵をお貸しください。

シートが5つあります。

1.統計
2.A
3.B
4.C
5.D

各シートには、

上級 200/150/100/90/80/70
中級 150/100/80
普通 80/60/50

合計12種類の項目があるとします。

例       1月 2月 ・・・・・・・・・・12月
上級 100   5100 2300
上級 150   2850 8900
普通 80    550 4300
・・

これを、2~5のシート各「上級」「中級」「普通」ごとに
統計側に各項目で数字を合計したいのです。

各シートごとで、上級/中級/普通で合計をして、最後に統計に
反映すればいいのでしょうが、面倒なので、統計のシートの中で、
関数にて、2~5の合計値として

例       1月  2月 ・・・・・・・・・・12月
上級     10000 24000
中級     58000  9500
普通     34000 32000 

と一気にしたいのです。

もしご存知であれば、すばやく簡単にできる関数や方法を
教えてください。


以上、宜しくお願い致します。

A 回答 (2件)

こんな感じでよいのでしょうか?



質問文の内容とこれから説明しようとしている内容を合わせるため
念の為、下記のように仮定義しておきます。

シート5つの名称を仮にそれぞれ
統計、A、B、C、D、Eとして

例として出されているシート(?)の
「例」の文字の所がA1セルとして、
1月、2月~~が順にC1、D1~~セル。
続いて上級、100、5100~~がA2、B2、C2~~セル。
12種類の項目ということなので、
ひとまず13行(A13セルの行)までとします。

統計のシートも同様に
「例」の列がA列、B列が空欄で、1月がC列…。
質問文では上級、中級、普通の3つとなっているので
4行(A4セルの行)まで。

以上の前提の時、
統計シート、上級の1月(C2セル)の内容は次の通り。

=SUMIF(A!$A$2:$A$13,"上級",A!C2:C13)+SUMIF(B!$A$2:$A$13,"上級",B!C2:C13)+SUMIF(C!$A$2:$A$13,"上級",C!C2:C13)+SUMIF(D!$A$2:$A$13,"上級",D!C2:C13)

あとはこれをコピペしたセルを元に、
そのセルを囲っている黒い太枠の右下部分の黒ポツを
適当なセルまでグリグリのズリズリとドラッグすればOKだと思います。
中級、普通についても"上級"の部分を置換するだけで使えます。

ちなみに、ABCDのシートのA列を見たうえで集計しているので
各シートでのデータの行位置(上級、中級、普通の順序)はバラバラで構いません。

更にちなみに、

=SUMIF(A!$B$2:$B$13,200,A!C2:C13)+SUMIF(B!$B$2:$B$13,200,B!C2:C13)+SUMIF(C!$B$2:$B$13,200,C!C2:C13)+SUMIF(D!$B$2:$B$13,200,D!C2:C13)

とすると、12種類の項目別の集計にもなります。
(この場合は、上級で200の場合のデータが対象。)
但し、セルに格納されている項目の部分が数値データの場合。
文字データで格納しているなら 200 が "200" になります。

とりあえずこちらで簡単な動作確認をしてみたものではありますが、
意図しているのと違う値で集計されたりした場合は
ご連絡ください。
    • good
    • 0
この回答へのお礼

ご回答、ご指導有難うございました。

理解及び解決できました。
助かりました。

もう1点ご質問ですが、関数が苦手です。
初歩/基本的な関数は使用できますが、IFや上記のような特異な
関数になってきますと、まったく理解できずにおります。

関数の勉強方法として、何か良い資料やHPなどございましたら
是非教えてください。また、どうやって勉強すればよいかなども
教えていただけると助かります。


以上、宜しくお願い致します。

お礼日時:2009/01/21 10:37

>もしご存知であれば、すばやく簡単にできる関数や方法を


>教えてください。

ということについて少し・・・。

データのストックをする際に、

例     1月  2月 ・・・・・・・・・・12月
上級 100  5100 2300
上級 150  2850 8900
普通 80   550 4300

というデータのストック方法をやめて、
つまり時系列を横方向に展開していくのをやめて、
縦方向に展開していきます。
例えば次のように

区分01  区分02  月   値
上級   100   1月   5100
上級   100   2月   2300
上級   100   3月   2350
上級   150   1月   2850
上級   150   2月   8900
上級   100   3月   5000
普通   80_   1月   550
普通   80_   2月   4300


このとき、

区分01  区分02  月   値
上級   100   1月   5100
普通   80_   1月   550
上級   100   3月   2350
上級   100   3月   5000
上級   150   2月   8900
上級   150   1月   2850
普通   80_   2月   4300
上級   100   2月   2300

といった風に、上下が入り乱れていても何の問題もありません。


こうして記録(ストック)しておくと、Excelの場合
「ピボットテーブル」という機能で
以下のレイアウトの表は簡単に集計できます。

例     1月  2月 ・・・・・・・・・・12月
上級 100  5100 2300
上級 150  2850 8900
普通 80   550 4300

VBAも関数も要らず、少しのウィザード応答と
ドラッグ操作、クリック、リストボックス選択などだけでできます。

このようなレイアウトのほか、
区分01だけの集計
月だけ
区分2だけ
区分2と月だけ
平均、累計、
なども計算式、関数、VBAなしで瞬間表示切り替えができます。
各項目の縦と横の入れ替えもドラッグだけで可能です。

ピボットテーブルはとても便利な機能ですので、
是非覚えられるとよいと思います。



なお、今回ご紹介したデータのストック方法は
「リスト形式の表」「リストデータ」「明細表」などとも呼ばれます。
縦方向にだけ、データが増えていきます。
対して・・・、

例     1月  2月 ・・・・・・・・・・12月
上級 100  5100 2300
上級 150  2850 8900
普通 80   550 4300

のように縦横集計されているものを
「マトリクス表」「クロス集計表」などと呼びます。

このうち「リスト形式の表」での管理は、
ピボットテーブルの機能で「マトリクス表」に変化させたり
並べ替え、その他の加工がとても簡便にできるようになります。
無駄なVBA、関数などをできるだけ少なくして
データを集計・管理できるようになりますから、
是非、データをストックする際は、「リスト形式」で
ストックすることを考えてみてください。

なお、「リスト形式の表」は、各シートに分かれていても、
列の内容が同じなら、最終的にそれらをさらに別シートに
縦にまとめてしまえば、ピボットテーブルが扱えます。
1つのシートに列がもし増えてしまったら、
他のシートも同じ列を増やします。
その際、値が無ければ空白セルにしておいても問題ありません。
強いて言うと空白セルには置換機能にて一括で、「---」など、
自分の好みの空白をあらわす値を適当に入れておけば
エラーも出なくなるので安心です。

「リスト形式」でのデータストックは
データ管理の基礎中の基礎です。
これがさらに発展したものが例えば
「リレーショナルデータベース」と
なっていくわけです。
「リレーショナルデータベース」は、例えば
GoogleやYahooもそのデータ管理に利用している形態です。
つまりそれほどに効率がよいのです。
その「リレーショナルデータベース」を構築する上での
基礎事項が「リスト形式」でのデータストックなのです。

こういったことを知らずにExcelを使うと、
無駄なVBAや関数を随所で使わないといけなくなり、
「リスト形式の表」とピボットテーブルを知っている場合の
10倍は効率が悪くなってしまいます。

ちなみに、ピボットテーブルと
ExcelのMicrosoftQueryという機能を使うと
GoogleやYahooと同じような
「リレーショナルデータベース」をExcel上で構築することができます。
もちろんシンプルな構造のものだけですが、
この2つを組み合わせると、さらにデータ管理効率が増します。

なおピボットについてはこちらの質問でも回答しましたので
ご参考にしてください。

http://oshiete1.goo.ne.jp/qa4650857.html

URLなどもご参考にしてください。

いろいろとおせっかい、失礼いたしました。
    • good
    • 0

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