重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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で数量を集計したのですが、
同じ品番と数量の行が並んでしまうのが都合悪いです。
良い手はありますでしょうか。

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

ご教授お願い致します。

A 回答 (2件)

品番だけの問題ならよいのですが、後からご質問でメーカーが変わったらどうなるとか倉庫が変わったらどうなるとか聞かれることでしょう。

それらのことも含めて答えることにすれば次のようになるでしょう。
元のデータがシート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),"")))
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/05/15 16:26

シート2に、別途、「重複の削除」で、品番が重複しない表を作成しておき、


http://pc.nikkeibp.co.jp/article/NPC/20070124/25 …

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


汎用性等はないので、「そういうデータが作れればいい」という場合にしかできませんが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/05/15 16:25

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