質問: excelで日付ごとに集計したいのですが・・・ いつもお世話になります。今回もよろしくお願いします。 現在1つのシートに 表a: ロット 日付 処理数 板数... ab 1/4 1000 2 ab 1/5 2800 2 表b: 日付 良品 不良1 不良2 使用機... 1/5 1000 10 15 4 1/5 900 8 5 2,3 1/6 2500 20 13 2 というようなデータが、1月~現在まで、機種ごとに数シートにわたって入力されています。(表aとbは、横並びになっています。)このデータを別シートに必要な箇所のみ日付ごとに集計し、下記のようにaとbを一つの表にまとめたいのです 日付 機種 板数 良品 不良1 不良2 使用機 1/4 101 2 1/5 101 4 1900 18 20 2,3,4 1/5 102 12 ... 1/5 103 20 ... 1つネックなのが、各機種で稼働日が統一でない点です。ある機種は完全週休2日、他は日曜も稼動したりしています。 自分で考えたやり方としては、各機種ごとに集計シートを作り、表aで一度、データ→集計(日付ごと)にして、コピーしておき、表bで同様に集計し、コピーする。その後別シートに日付作成しておき、日付を基準としてvlookupでもってこないといけないのかな?と思っています。 ですが、この時面倒なのが、使用機が同日付内に数機使った場合、重複しないように書き出したいので、結局は全てのデータを目で確認しないといけません。しかも、10機種以上あるので、今後全ての機種を毎月この作業をするのは手間がかかりすぎてしまいます。 これをなんとか簡単に、できればvbaで持っていける方法はないものでしょうか。 わかりにくいと思いますので、不明な点は補足させていただきます。お手数がよろしくお願い致します。
回答: こんにちは(^^) 少し整理させてください。まず、データベースは、機種別シートの中に表aと表bがある状態ですね。たとえば、accessなどのデータベース管理ソフトでこれを作成する場合は、表aと表bは別テーブルで、あるフィールド(列)をキーとして、関連づけさせることになります。集計を行う場合、まず、複数のテーブル(表)の中からキーとするフィールドを決めて、集計に必要なフィールドを集め、統合した新たなテーブルやフォームを作ることになりますが、この作業はクエリーという機能を使って進めると便利でしょう。 まず、データを統合してから、ピボットテーブルで集計されるとスムーズに行くように思われます。ただ、統合がややこしいかもしれません。 新しいシートを立ち上げ、[データ]>[外部データ取り込み]>[新しいデータベースクエリ]とします。データベースタブのexcel filesを選択>[ok]>データベース名で、ファイルを選択>[ok] ここで、ファイル内の各sheetがエクスプローラスタイルで表示されますので、統合するテーブル選択します。表示されない場合は表の作り方に問題がありますので、元のファイルの表を少し変更する必要があるかもしれません。ふつう、フィールド名が先頭行にきていれば認識してくれます。また、表a,bは同一シート内にあるので、同一テーブルと見なされますね。できれば、どちらかをいったん別シートにコピーするなりして、そのシートを参照したほうがいいでしょう。 フィールド名がすべて表示されますので、統合・集計に必要なものはすべて選択して[>]>[ok]、おそらくクエリーを使って編集する旨のメッセージが出ますので、[はい]または[ok]とすると、microsoftquelyが立ち上がります。(もしかするとmicrosoftquelyは標準インストールでインストールされなかったかもしれないので、入っていなければ、追加削除で追加しておいてください。)リレーションシップウインドウに、それぞれのテーブルのフィールド名が表示されていますので、日付をキーとする場合は、”日付”をドラッグして、一方のウインドウの"日付"から他方ウインドウの"日付"に重ねてください。これで、microsoftquelyを閉じると、日付をキーとする新しいテーブルができます。このテーブルを、ピボットテーブル集計にしたら良いと思われます。また、この操作はマクロに記録できます。 普段使い慣れていない機能を使うことになると思われます。他の回答でもっと良いものが出るかもしれませんが、チャレンジしてみてはいかがでしょう。説明は長文ですけど、各操作の詳細はヘルプで調べてみてください。