重要なお知らせ

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

電子書籍の厳選無料作品が豊富!

エクセルの同じワークブック内に下記データがあります。
この二つのデータを整理してまとめたいと思っていますがVBA等でどのようにすれば出来るでしょうか?
整理したいデータは2行目からです。
ややこしくてなかなか伝わらないかもしれませんが、都度補足致しますのでよろしくお願い致します。

ワークシート名「JUTYU」
A列、B列、C列、D列、E列、F列、G列、H列、I列、J列、K列、L列、M列、・・・
日付1、*、品名1、*、*、受注数量、*、*、*、コード1、*、品名2、コード2、・・・

ワークシート名「JISSEKI」
A列、B列、C列、D列、E列、F列、G列、H列、・・・
日付2、品名1、*、*、品名2、コード1、*、実績数量、・・・

↓これをワークシート「まとめ」にこのようにまとめたい
    A列、B列、C列、D列、E列、F列、G列、H列、・・・
1行目 【空白】、【空白】、【空白】、【空白】、【空白】、【空白】、年、【空白】・・・、年・・・
2行目 コード1、 コード2、【空白】、 品名1、 品名2、  区分、1月、2月・・・、1月、・・・
3行目 データ、  データ、【空白】、 データ、 データ、  受注、上記年月にあう「日付1」の「受注数量」のデータを入れる。その月の数量がなければ空白・・・・
4行目 【空白】、【空白】、【空白】、【空白】、【空白】、  実績、上記年月にあう「日付2」の「実績数量」のデータを入れる。その月の数量がなければ空白
5行目 【空白】、【空白】、【空白】、【空白】、【空白】、  内示、全部空白・・・
6行目 【空白】、【空白】、【空白】、【空白】、【空白】、  見込み、全部空白・・・
7行目 【空白】、【空白】、【空白】、【空白】、【空白】、  合計、3行目~5行目のSUM・・・
3行目~7行目を一グループとし、8行目以降は同じデータごとに繰り返し

※「データ」は、2行目に合う上記ワークシート情報のデータを持ってくる。
※上記ワークシートで同じデータ同士でまとめたい。
 (品名1、品名2が両ワークシートで全て共通であれば一グループにデータをまとめる。なお、品名1と品名2が共通であれば、おのずとコード1も共通になります。)
※コード1、コード2、品名1、品名2の優先順に昇順でまとめる。
※ただし、当月が2018年9月の場合、
 ワークシート「JUTYU」は2018年8月以前のデータは無視する
 ワークシート「JISSEKI」は2018年9月以降のデータは無視する
※データのまとめは前年の1月~。それ以前のデータは無視する。例えば今が2018年9月であれば、2017年1月~でまとめる。←これは後で変えれるようにしたいです。

「データの整理(VBA)」の質問画像

質問者からの補足コメント

  • 文字数の関係でご質問順に⇒で記載します。

    ⇒融通利かせるようにご提案のシートに記載でお願い致します。

    ⇒JISSEKI:MAX10000件ぐらい
     JUTYU:MAX5000件ぐらいです。

    ⇒ややこしくてすみません。大きく2種類(コード、品名)の意味で表現しました。
     ・コード⇒最初の納品先(コード1)、エンドユーザー(コード2)
     ・品名⇒部品記号(品名1)、部品名(品名2)

    ⇒開始年月は2017年1月~で問題ありませんが、その先は2018年12月以降になる可能性があります。(JUTYUシートは今後の見込みデータなので、2019年のデータとかもあります。日付データがある年までの12月まででデータを集計したいと思っています。)

    ⇒ご提案のように、どこかのセルに集計開始年を記入で集計したいです。

    No.6の回答に寄せられた補足コメントです。 補足日時:2018/10/04 11:37
  • もう一つ漏れていました。
    合計のところはSUM関数にしたいです(区分:受注と実績以外の区分のところは手入力で数値を入れる為)。SUM関数なので、受注と実績に数値が無い列は0表示されてしまいますが、それは問題ありません。

    No.8の回答に寄せられた補足コメントです。 補足日時:2018/10/06 12:33

A 回答 (11件中1~10件)

こちらにアップしました。


https://ideone.com/1njDuF
    • good
    • 0
この回答へのお礼

ありがとうございました!
処理用ワークシート削除の命令がマスクされておりましたので、解除させて頂きました。
大変助かりました。

お礼日時:2018/10/06 15:57

>合計のところはSUM関数にしたいです(区分:受注と実績以外の区分のところは手入力で数値を入れる為)。


了解しました。

>SUM関数なので、受注と実績に数値が無い列は0表示されてしまいますが、それは問題ありません。
書式を"#"にマクロで設定しておけば、0の場合、空白を表示するようにできますが、いかがいたしましょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
書式"#"で設定をお願い致します。
(書式"#"の存在を初めて知りました。今までIF文等で空白表示してたので目から鱗です)

お礼日時:2018/10/06 14:56

>JUTYUとJISSEKIで共通の品名1、品名2の組み合わせがあれば、それも一つにまとめたいです。


もし、以下のように、JUTYUに以下の様に、品名1、品名2の組み合わせがおなじものが、複数あった場合、
JISSEIKIのデータはどちらにまとめるのですか。

例)JUTYU コード1:1001、コード2:1012、品名1:AAAA、品名2:BBBBB、日付:2018年10月、台数:100
  JUTYU コード1:1001、コード2:1013、品名1:AAAA、品名2:BBBBB、日付:2018年10月、台数:100
  JUTYU コード1:1001、コード2:1014、品名1:AAAA、品名2:BBBBB、日付:2018年10月、台数:100
  JISSEKI コード1:1001、品名1:AAAA、品名2:BBBBB、日付:2018年9月、台数:200台
  ↓
提示された例のようにコード1012にまとめてよいのですか。
                     2018年
 コード1 コード2 品名1 品名2 区分  1月・・・9月 10月
 1001   1012 AAAA BBBBB 受注      100
                  実績         200

それとも、コード1013のほうにもまとめて良いのですか。
                     2018年
 コード1 コード2 品名1 品名2 区分  1月・・・9月 10月
 1001   1013 AAAA BBBBB 受注      100
                  実績         200

それとも、このようなケースは考慮しなくて良いのですか。
    • good
    • 0
この回答へのお礼

申し訳ございません。
挙げて頂いたケースは考慮頂かなくて問題ありません。
(理由:同じ品名1でコード2が分かれるパターンは存在しません。)

お礼日時:2018/10/06 14:50

下記URLにアップしました。

標準モジュールに登録してください。
https://ideone.com/zzsDpf

集計開始年のB1は数値を入力してください。(シリアル日付ではありません)
処理年月のD1はシリアル日付で入力してください。(文字列ではありません)
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます!
申し訳ございません。コード1、コード2、品名1、品名2の関係で漏れていました。

JUTYUとJISSEKIで共通の品名1、品名2の組み合わせがあれば、それも一つにまとめたいです。
例)JUTYU コード1:1001、コード2:1012、品名1:AAAA、品名2:BBBBB、日付:2018年10月、台数:100
  JISSEKI コード1:1001、品名1:AAAA、品名2:BBBBB、日付:2018年9月、台数:200台
  ↓
                     2018年
 コード1 コード2 品名1 品名2 区分  1月・・・9月 10月
 1001   1012 AAAA BBBBB 受注      100
                  実績         200

お礼日時:2018/10/06 12:28

補足ありがとうございました。


以下の仕様で、問題ないでしょうか。
1.集計開始年は「まとめ」シートのB1に記入するものとします。(添付図参照の黄色部分)
  集計開始年の1月がG列に割り当てられます。
2.処理年月は「まとめ」シートのD1に記入するものとします。 (添付図参照の黄色部分)
3.「まとめ」シートの1行目と2行目は見出しの為、更新しません。マクロは3行目以降を設定します。
4.罫線は5行ごとに引きますが、最大の列が不明の為、2行目の最大列に合わせて、1列~最大列まで引きます。
5.「まとめ」シートのデータのソートは、以下のオーダーとなります。
第1キー:コード1
第2キー:コード2
第3キー:品名1
第4キー:品名2

JISSEKIシートにはコード2がありませんので空白になります。
従って、コード2が空白でないグループ(添付図の赤線で囲んだグループ)は、受注の数量が設定され、実績の数量が設定されることはありません。
コード2が空白のグループ(添付図の赤線で囲んだグループ)は、実績の数量が設定されます。又、JUTYUシートでコード2が空白の場合の受注の数量が設定されます。
「データの整理(VBA)」の回答画像7
    • good
    • 0
この回答へのお礼

色々ありがとうございます!
整理頂きました内容にて問題ございません。

お礼日時:2018/10/04 23:36

補足要求です。


①当月が2018年9月の場合の例が、提示されていますが、
当月が9月であると、どうやって判断するのでしょうか。
マクロ実行時の日付(CPU時間)から、その月を算出は可能ですが、
9月の処理を10月になってから行いたいということはないのでしょうか。
それであれば、一例ですが、添付図のように「まとめ」シートのD1に処理年月を記入しておき、
その年月をもとに処理をしたほうが良いと考えますがいかがでしょうか。

②JISSEKIシートとJUTYUシートのデータ件数はおよそ何件でしょうか。

③コード1、コード2、品名1、品名2との関係はどのようになっていますか。
通常は、品名1にコードを割り振ったものがコード1、品名2にコードを割り振ったものがコード2であり、
コード1と品名1は1:1の関係
コード2と品名2は1:1の関係と考えられます。
ところが、あなたの
「品名1と品名2が共通であれば、おのずとコード1も共通になります。」を読むと、
コード1と(品名1+品名2)が1:1の関係のように見えます。
つまり、(品名1+品名2)にコードを割り振ったものがコード1のように見えます。
すると、コード2はいったい何なのでしょうか。
コード1、コード2、品名1、品名2との関係がよくわかりません。

④当月がが2018年9月の場合、
>データのまとめは前年の1月~。それ以前のデータは無視する。
>例えば今が2018年9月であれば、2017年1月~でまとめる。←これは後で変えれるようにしたいです。
とのことですが、そうすると
2017年1月~2018年12月でまとめるのではないでしょうか。
提示された画像では、G列~R列は2017年1月~12月分なのでしょうか。
そして、画像には表示されていませんが、S列~AD列が2018年1月~12月分なのでしょうか。

又、「←これは後で変えれるようにしたいです。」の意味はどのようなことでしょうか。
例えば、この例では、前年から集計しているが、何か設定を変えると、
前前年の2016年1月~2018年12月まで集計できるようにしたいというようなことでしょうか?
それであれば、集計の開始年(今回は2017年)をどこかのセルに記述しておくべきと考えますがいかがでしょうか。
「データの整理(VBA)」の回答画像6
この回答への補足あり
    • good
    • 0

JUTYU


のワークシートO列後ろにJISSEKI
のJUTYUに無い項目を貼り付け
日付を年月のみのもの追加
コード1 コード2
の3通りの組み合せ組み合わせを
関数で1つのセルに表示
その後、ピポッドテーブル
使用してみては。
    • good
    • 0

VBAに詳しく無いのなら


手打ちした方が早いです。
VBAなら極めて簡単な集計です。
データベースをワークシート1枚にまとめピポッドテーブルでまとめることをお勧めします。

VBAを勉強する気があるのなら
ExcelVBA実践技&上級技大全
お勧めです。
    • good
    • 0
この回答へのお礼

データ数がとても多く、一回の作業では無いため何とか手打ちを避けたいと考えていました。
ピボットの場合、まとめのA列〜E列が列ごとに一つずつ分けれず、一つの列に一行ずつ表示されてしまったので断念しました。

お礼日時:2018/10/01 06:57

コード1とコード2の組み合わせは3通りですか?

    • good
    • 0
この回答へのお礼

コード1とコード2が同じ値
コード1とコード2が違う値
コード1だけ値がある(この場合、まとめ後のコード2の箇所は空白にしたいです)
の、3パターンになります

お礼日時:2018/09/30 16:30

マクロ、プログラミングに成りますが、理解してますか?

    • good
    • 0
この回答へのお礼

VBAは初心者で、かじった程度になります。すみません。

お礼日時:2018/09/30 16:16

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