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

解決済みの質問

EXCELでのデータ集計について

EXCEL2007、XPを使用しています。

下記の様なデータが並んでいる時に、
項目ごとの集計を行いたいです。


A / B / C / D
倉庫 / メーカー / 品番 / 数量
東京 / テスト / test1 / 5
東京 / テスト / test2 / 3
東京 / テスト / test2 / 4
東京 / テスト / test3 / 1
東京 / テスト / test2 / 2
東京 / テスト / test4 / 4

         ↓

集計後、品番が同じものが並ばないように。

A / B / C
メーカー / 品番 / 数量
テスト / test1 / 5
テスト / test2 / 9
テスト / test3 / 1
テスト / test4 / 4


SUMIFで数量を集計したのですが、
同じ品番と数量の行が並んでしまうのが都合悪いです。
良い手はありますでしょうか。

シートが別になっても構いませんが、
マクロの使用は極力避けたいです。

ご教授お願い致します。

投稿日時 - 2013-05-14 18:06:03

QNo.8087766

すぐに回答ほしいです

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

品番だけの問題ならよいのですが、後からご質問でメーカーが変わったらどうなるとか倉庫が変わったらどうなるとか聞かれることでしょう。それらのことも含めて答えることにすれば次のようになるでしょう。
元のデータがシート1に有るとしてA1セルに倉庫、B1セルにメーカー、C1セルに品番、D1セルに数量とそれぞれ項目名が入力されているとして2行目から下方にデータが有るとします。
そこで作業列を作って対応します。
E2セルには次の式を入力して下方にドラッグコピーします。

=A2&B2&C2

F2セルには次の式を入力して下方にドラッグコピーします。

=IF(E2="","",IF(COUNTIF(E$2:E2,E2)=1,MAX(F$1:F1)+1,INDEX(F$1:F1,MATCH(E2,E$1:E1,0))))

そこでお求めの表をシート2に表示させることにします。
A1セルからD1セルにはシート1の項目を並べます。

A2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(ROW(A1)>MAX(Sheet1!$F:$F),"",IF(COLUMN(A1)<=3,INDEX(Sheet1!$A:$C,MATCH(ROW(A1),Sheet1!$F:$F,0),COLUMN(A1)),IF(COLUMN(A1)=4,SUMIF(Sheet1!$F:$F,ROW(A1),Sheet1!$D:$D),"")))

投稿日時 - 2013-05-15 11:08:31

お礼

頂いた関数で、問題なく作成する事が出来ました。
勉強になりました。ありがとうございます。

投稿日時 - 2013-05-15 16:26:22

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

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

回答(2)

ANo.1

シート2に、別途、「重複の削除」で、品番が重複しない表を作成しておき、
http://pc.nikkeibp.co.jp/article/NPC/20070124/259397/

それに対して(シート2で)、sumif関数使って、シート1からデータ引っ張ればいいのでは?


汎用性等はないので、「そういうデータが作れればいい」という場合にしかできませんが。

投稿日時 - 2013-05-14 19:06:59

お礼

ありがとうございます。
ご教授頂いた考え方で無事作成できました。

投稿日時 - 2013-05-15 16:25:27

あなたにオススメの質問