こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excelの集計について

Excelを使って、添付画像左上のリストに入力された値をもとに、右側に集計結果を表示したいのですが、やり方がわからず困っています。
・他のプログラムからリストに値を入力し、集計結果を取得したいです。
・リストの入力値が変われば、自動で集計結果を変えたいのでExcel関数の組み合わせ、もしくはマクロ等で集計させる方法はないでしょうか。

詳しい方、教えてください。
よろしくお願いします。

マルチメディアファイルは削除されたか見つかりません。

投稿日時 - 2011-04-06 09:55:27

QNo.6648108

困ってます

質問者が選んだベストアンサー

この処理でSumifで集計する場合の問題は、集計エリア(右側の集計用の範囲)のキーとなる品名?(列Aの項目)が一定であるかということです。
元のデータが変わる都度このキーとなる項目の内容が変わるような場合(あるときはA,B,Cだが、次には A,C,Eとなるような場合)はSumifだけではうまくいきません。
集計エリアでまずそのキーとなる品名等をセットしないといけないからです。

少し考え方を変えて、この集計エリアの様式を限定しないで結果が得らればよいということならば下記のマクロを組めば可能です。

元のリストを常に同じ名前のシートの同じ場所に貼り付ける。
この貼り付けデータをA列をキーにして昇順に並べ替える。
集計機能を使って、A列をキーにしてC列の数値の合計を行う。
明細行を隠し、集計行だけを表示する。

こうすると、最終的にA列を同じくするデータの合計を得ることができます。

以上を一度マクロに登録しておけば次回からは自動集計ができます。

なお、この集計地をおたずねのような結果の表に持っていくことはやはりマクロで可能ですが、それはご自分で考えてください。

単純なコピー貼り付けでは明細行もコピーされてうまくいきません。いかに合計行だけをコピーするかがコツです。

投稿日時 - 2011-04-11 16:05:43

お礼

回答ありがとうございます。
マクロの設定についても参考にさせていただきます。

いろいろなサイトで調べた結果、下記のような関数の組み合わせで列Aの項目を重複なしに抽出することが出来ました。
=IF(COUNT(INDEX(1/(MATCH($A$2:$A$100,$A$2:$A$100,)=ROW($1:$100)),))<ROW(A1),"",INDEX(A:A,SMALL(INDEX(SUBSTITUTE(ISNUMBER(1/(MATCH($A$2:$A$100,$A$2:$A$100,)=ROW($1:$100)))*1,0,10^7)*ROW($1:$100)+1,),ROW(A1))))

投稿日時 - 2011-04-11 17:14:51

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

 添付画像がピンボケで、セルの表示内容が読めないため、質問者様が、どの様に集計されたいのかが解りません。
 ですから、補足欄等を使用して、どの様に集計されたいのかを、文章で詳しく説明しては頂けないでしょうか?

投稿日時 - 2011-04-06 15:46:01

お礼

ご回答いただきありがとうございました。

投稿日時 - 2011-04-11 17:16:45

ANo.1

元のデータがはっきりしていない場合は、インポートしてからピボットテーブルを起動すれば良いんじゃないかと。
http://www11.plala.or.jp/koma_Excel/pivot_menu.html
http://allabout.co.jp/gm/gc/297727/

ピボットテーブルを使えば、元データのどんな解析も思いのままです。とっつきは悪いですが、使いだすと手放せなくなりますよ。

投稿日時 - 2011-04-06 10:47:22

補足

回答ありがとうございます。
既存のプログラムを使用して、データ入力、抽出を行うためピボットテーブルは使用できません。(リスト更新後、アクションが必要になるため。)

調べたら、品目の重複行をリスト化できれば、SUMIF関数で合計を出せるというところまではわかりました・・・

投稿日時 - 2011-04-06 11:33:22

お礼

ご回答いただきありがとうございました。

投稿日時 - 2011-04-11 17:16:32

あなたにオススメの質問