エクセルで5つのブックの最新データを別のブックにまとめる方法

このQ&Aのポイント
  • エクセルで違うブックに入力された5つのデータを一つのブックにまとめる方法を教えてください。
  • 5人の担当者が別々のブックでデータ入力していますが、それぞれのブックの最新データを別のブックに集約したいです。
  • マクロやボタンを使用して、各担当が入力が完了した時点でデータをまとめる方法を教えてください。
回答を見る
  • ベストアンサー

エクセルで5つのブックの最新データを別のブックにまとめたい。

エクセルで5つのブックの最新データを別のブックにまとめたい。 5人の担当者が、並行してデータ入力しているブックがあります。 セルの配置や項目は一緒です。 各担当者は、データを日々継ぎ足ししており、 そのデータを別のブックに日々、集約していきたいのです。 継ぎ足される順序は、問いません。 重複や漏れがなければ、OKです。 都度、コピペしていけば良いのですが、 各担当が入力完成時にマクロ等でボタン一発でいけたら幸いです。 ちなみにそれぞれのブックは、共有フォルダ内で作業しています。 1データ20項目で文字と数字主体で、関数等は含まれません。 それぞれの担当者に通し番号データもあります。

  • koh73
  • お礼率87% (111/127)

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

  • ベストアンサー
  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.3

今日わ まず、やってもらいたい事があります。 共有フォルダに、次に二つのフォルダを作ってください。 更新前フォルダ 更新済フォルダ 更新ブックの処理 前提 一行目は、見出しである A列Zまでを転記する A列は必ず、記入する AA列は、転記状況の表示に用いる Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim ttt As String Dim i As Long Dim j As Long Dim k As Long ' ttt = "ファイルのパス"... \\xxx\xxx\転記前フォルダ ' コンピュータ名 = Environ("COMPUTERNAME") ttt = ThisWorkbook.Path i = Cells(Rows.Count, "A").End(xlUp).Row j = Cells(Rows.Count, "AA").End(xlUp).Row If i = j Then Exit Sub Workbooks.Add ThisWorkbook.Sheets("Sheet1").Range("A1:Z1").Copy _ ActiveWorkbook.Sheets(1).Range("A1") ThisWorkbook.Sheets("Sheet1").Cells(j + 1, 1).Resize(i - j, 26).Copy _ ActiveWorkbook.Sheets(1).Range("A2") ActiveWorkbook.SaveAs ttt & "\" & _ Format(Now, "yyyymmddhhmmss") & _ Environ("COMPUTERNAME") & ".xls" ActiveWorkbook.Close For k = j + 1 To i ThisWorkbook.Sheets("Sheet1").Range("AA" & k).Value = _ "済 この行は削除してもいいです。" Next k End Sub 集約ブックの処理 言葉で、もっと詳しく書きます。解らなければ、もう一度質問してください。 ワークブックオープンの処理です。 まず、共有フォルダの更新前フォルダに、ブックがあるかどうか調べます。 ブックが有ったら、以下の処理をします ブックを開きます。 そのブックの、Sheets(1)の二行目から最終行まで、AからZまでの列をコピーします。 集約ブックに、追加貼り付けします。 更新前フォルダから今開いたブックを更新済フォルダにセーブします。 更新前フォルダから今開いたブックを削除します。 更新前フォルダにあるブック数だけ繰り返します。 終わりです。

koh73
質問者

お礼

ki-aaa様、 とても丁寧な説明ありがとうございます。 おそらく、指示通り実施できれば使えるのだろうと思うのですが、 私自身のスキルの問題でできそうにありません。 不甲斐ないです。勉強します。 いろいろ、細かく指示いただいたのに申し訳ありません。 返事が遅れ、申し訳ありませんでした。

その他の回答 (3)

回答No.4

#1です。MS Queryが使えないと意味がないですが、 参考となるリンクを張っておきます。 Chiquilinさんのサイト http://www.geocities.jp/chiquilin_site/data/070309_data_integration2.html#C01 Microsoft Query を使用して外部データを取り出す http://office.microsoft.com/ja-jp/excel-help/HA010099664.aspx UNION ALL としなくてもフィールドを結合すればでよいのかもしれない。(未検証) http://www.ie.reitaku-u.ac.jp/~ykago/lectures/db/odbc/odbc03.html

koh73
質問者

お礼

再度、お調べいただきありがとうございます。 何個か試してみたのですが、仕様の問題?でだめでした。 申し訳ございません。

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.2

更新ブックの処理    Workbook_BeforeSaveのイベントを使います。 入力したデータを新しいブックに書き出します。 ブック名は、YYYYMMDDhhmmss & "担当者名" とします。 入力ブックに一列、追加します。 その列に、済 この行は削除可能です。 とでも入力します。 集約ブックの処理 Workbook_Openのイベントを使います。 更新ブックのYYYYMMDDhhmmss*を読み込み、集約ブックに転記します。 更新ブックを消すか、名前を変えます。 これでどうでしょう。

koh73
質問者

お礼

早速の回答ありがとうございます。 なんか、いけそうなんですが、 もう少し、噛み砕いて教えていただけると幸いです。 VBAも素人なんで、WEBで調べながらやってみたんですけど 今ひとつ要領がつかめなくて... 申し訳ありません。 よろしくお願いします。

回答No.1

Excel2003/2002なら MSクエリのSQLでSelect文をUNION ALL で連結していけば取り出せるんじゃないかなあ。 データ - 外部データの取り込み - 新しいデータベースクエリ Excel Filers* [OK] データベースの[▼]から5つ分テーブルを追加しておく ひとつのブック分の必要なフィールドを追加したら、SQLを表示させ、メモ帳にコピペ いったん、追加したフィールを空にし別のブックの同じフィールドを追加。 SQLを表示させ、メモ帳にの一番下に「UNION ALL」を追加後、コピペ。 繰り返し。 メモ帳にコピーしたものをMSQueryに貼り付け。 MSQueryからExcelへ クエリの更新を時間で設定したり、データ自体を保存しないことも可能です。 # Excel2007は挑戦してません # Excel2000は手元にありません

koh73
質問者

お礼

早速の回答ありがとうございます。 複雑ですね~(私のレベルには) もっと単純にできるものだと思ってました。 厳しい...

koh73
質問者

補足

すいません、それ以前に2002なんですが、クエリを使えない仕様になっていました。 会社の規制みたいです。

関連するQ&A

  • エクセルで入力したデータを別ブックに反映させたい

    エクセルのVBAで私がやりたいことは次の通りです。書類(申請書など)を受け付けてエクセルに入力し、ナンバーを取っています。イメージとしてA列にナンバー(1から連番です)B列に書類の名前、C列に受付日、D列に担当者、E列に処理状況といった感じです。担当者は10人なので、現在は関数で担当者別の同じ体裁の別ブックにデータが移行するように組んであります。(元のするブックを読み取り専用で開き、各担当者のブックを開いてデータが来るようにしています。)今は各担当者のブックに入力した処理状況は元のブックに反映させることができません。これを、それぞれのブックの処理状況に入力すると元のブックにも反映するようなシステムは作れるでしょうか。繰り返しますが元のブックと各担当者のブックは全く同じ体裁です。各担当者が同時に作業をできるように別ブックにしています。VBAを使うのでしょうか?それとも関数だけでできるのでしょうか?当方VBAは全くの初心者ですが、問題が解決できるのならぜひ覚えたいと思っています。現在の関数のやり方だとブックを開くのにかなり時間がかかるし、とにかく両方のブックを開かないとデータが来ないのが不便です。 なお各担当者のエクセルのバージョンはバラバラで2003から2010まであります。よい方法があれば教えてください。 このコーナーへの質問も初めてなので要領が悪い点はご容赦ください。

  • エクセルで一つのセルに別Bookのデータを貼り付け

    エクセルで別Bookにある複数の参照データを一つのセルに 貼り付けたいのですが、 例えばBook1には以下のようなデータがあります。    A列       B列 1 バナナ     カテゴリ1 2 もも       カテゴリ1 3 りんご      カテゴリ1 4 メロン      カテゴリ1 5 バナナ     カテゴリ2 6 みかん     カテゴリ2 7 もも       カテゴリ3 8 バナナ     カテゴリ3 9 いちご     カテゴリ3 10 もも      カテゴリ4 Book2にはB列にカテゴリ1・カテゴリ2・カテゴリ3というように、 項目が入力されています。 Book1を参照して、B列のカテゴリ1に当てはまるA列の値(例ではバナナ、もも、りんご、メロン)を Book2のカテゴリ1の横(A1)の一つのセル内に貼り付けたいのですが 可能でしょうか?    A列      B列 1 バナナ   もも       カテゴリ1   りんご   メロン 2 バナナ     カテゴリ2   みかん  3 もも       カテゴリ3   バナナ   いちご             つまり、Book2を上記のような形にできればと思います。 拡張子は .xlsxです。 A列の項目とB列のカテゴリ数は数1000ほどあり、 各カテゴリの数は1つのものもあれば、10数個あったりと不揃いです。 カテゴリに見合わせてコピペしていくのは大変なので 良い方法があれば、ご教授宜しくお願い致します。    

  • エクセル集計表から、別ブックに抽出したい。

    お世話になります。 エクセルで作成した集計表があります。この表のうち、各項目の小計を別ブックに抽出し、元の集計表よりもさらに集約した表を作成したいと考えています。 元の表の縦列には集計したい各項目の小計をおいています。この元データが細かく区分されたデータですのでざっくりした簡単な見やすい表を作成したいのですが、別のブックに抽出するにはどうすれば良いでしょうか。また元データを更新すれば、抽出した別ブックも更新できるとさらに助かります。 いうなれば、アウトライン小計を閉じたような状態の表を別のブックに作成したいのです。 下のような例ですと、各見込と実績は、小計を閉じた状態です。開けばもっと縦列が膨らみます。            1月    2月    3月    4月    ・・・・・・・        見込 みかん  実績       差額  見込 りんご  実績       差額 詳しい方、アドバイスをどうぞ宜しくお願い致します。

  • excelでbookからbookへの数式コピー

    既出かもしれませんが教えてください。 4つのシートにカテゴリーごとに入力した情報があり、 5つめの「シート5」にシート1-4の内容をすべてリンクさせて一行に集約しています。 2年前よりこれを用いて、シート1-4は入力用、シート5は出力用としてdataを整理してきました。現在400ほどのbookが集まっています。 事情により、すべてのシート5の内容を変更せねばならず、あるブック[book1とする]のシート5で一つ一つのセルの数式を変更しました。book1で改定したシート5・改を他のすべてのbookに適用する必要があり、book1 シート5・改の数式のみを book2のシート5にコピペしたのですがうまくいきません。 book2 のシート5に、book1の1-4までのdataが貼り付けられてしまうのです。 book間で、数式のみをコピペすることはできないのでしょうか?

  • 【エクセル2010使用】違うブックから[データの入

    【エクセル2010使用】違うブックから[データの入力規則]→[入力値の数値]→[リスト]を参照することは、可能なのでしょうか? 現在、同じブック内の別のシートに会社で取り扱っている[商品一覧]を作って、別のシートでドロップダウンするなどという使い方をしています。 ただ、取引先ごとにブックを分けているため、[商品一覧]がひとつでも増えてしまうとその都度、修正せざるをえません。 そのため、違うブックに[商品一覧]を作って、リストからドロップダウンできれば、修正するにしても一ヶ所のみで済むと思ったのですが、いろいろ調べてもうまくいかず、こちらで質問させて頂きます。 ※ちなみに、VLOOKUP関数を用いて入力された商品名から値段が表示されるように設定しています。 ただ、関数はできても[データの入力規則]は違うブック間ではやり取りができないのかな…と頭を悩ませております。 どなたかエクセル2010で、上記の希望を叶えてくれる手順をご存じの方がいらっしゃいましたら、教えて頂けると幸いです。 宜しくお願い致します。

  • 各部署から毎日、エクセルの1ブック1シートでデータが送られてきます。

    それを少し編集し部署毎に月別ブックを作りデータを追加しています。ただ月別ブックも1シートのみで、1日から順に末尾行へ追加して、翌月は新たなブックに・・・という仕様です。 1日のデータは1行~数行あり、項目等は変わらす数値が変化し、行単位でのコピぺで対応しています、何とかマクロでできないかと。。。 現在、送られてくるデータを作業シートに読み込み、不要行抽出まではできました。 これを別ブック月報シートのデータ末尾行に追加上書きしていきたいのですが、 既存データ末尾を検索?貼り付けのマクロで四苦八苦です TOT どなたかご指導願います。

  • EXCEL VBA 別のブックへの転記について

    ユーザーフォームを利用してEXCELにてデータベースを作成しております。 データ入力後は、コマンドボタンをクリックし シートへデータを記録するコードを書きました。 その際に、同フォルダ内に設置している、別のブックを開き 同様にデータを書き込みたいと思っています。 コードを書くにあたり、以下の点を盛り込んでみましたが、エラーは出ないのですが 数値の反映が出来ておらず、必要な別ブックがオープン出来ていない気配です 1、ブックオープン時、開いているかどうか調べ   開いてる   →メッセージなし  データの書き込み   開いていない →ブックを開く    データを書き込む 2.別ブック 書き込むセルは、最下部のセル 3.作業終了後、別のブックは保存して閉じる 4.ブックの指定は、同フォルダ内なので、作業PC移動も考慮し   パス名は、できる限り省略もしくは取得して設定したい  フォルダ名                 「データ記録システム」  ユーザフォームを起動させるブック   「全データ.xls」  別ブック                   「管理用データ.xls」 EXCELは2003を利用していますが、近日中に2007へ移行いたします まだまだ未熟なので、恥ずかしい限りですが どうぞご教授頂けますようよろしくお願いいたします

  • エクセルでシート間をまたぐ関数について

    http://okweb.jp/kotaeru.php3?q=1437319で質問をさせて頂き、オートフィルの回答を頂いたのですが、補足を付け加えて、 再度質問させてください。 仕事で効率化を図るため関数が必要となったのですが、 シート間をまたぐ関数が分かりません。 例えば、    A      B      C     1 機械番号  担当者番号   日付 _________________    2  AA-05     H-6    6/2 3  ES-12     R-9    5/31 4  LT-32     G-118   6/8 5  NB-45     H-6    6/5 6  AA-05     R-9     5/25 7  NB-45     G-118    5/5  <Sheet1>                    という表がSheet1にはあって    A      B      C     1 担当者番号  機械番号    日付 _________________    2  H-6      AA-05    6/2 3          NB-45    6/5 4  5  R-9      ES-12    5/31 6         AA-05    5/25 7 8  G-118     LT-32    6/8 9          NB-45    5/5   <Sheet2>                      という風な集約用の表 Sheet1に入力したデータをSheet2で指定の項目にしたがって集約させたいと考えています。 データが手元に来るのが少しずつなので、 あるデータから入力していき、Sheet2で担当者番号を入力すると、それに伴うデータが集約されて 出来れば一つのセルに反映させたいのです。 データの量も多く、その都度オートフィルで拾い上げて、 Sheet2に持っていくと、データが重複する恐れがあるので Sheet2で担当者番号を入力すると、機械番号・日付を自動表示させたいです。 こんな事って出来るのでしょうか? どなたか教えてださい。

  • エクセルのデータ抽出

    複数の条件(重複も含む)に一致するデータを項目別に抽出したいのですが、関数で可能なのかどうかすら分からない状態です。顧客管理目的で、日付を入力すると項目別に表示させるようにすることはできますでしょうか? 図1をデータベースとして顧客データを入力し、図2を管理用として日付を入力すると各項目が表示される感じです。 ご教授の程、よろしくお願い致します。

  • Excelで他Bookにデータを出力する時

    お世話になります。 Microsoft Excel 2002を使ってサークルの名簿を作っている初心者です。 サークルの会員20人おのおのにSheet1に入力してもらった情報を Sheet2で「=Sheet1!A1」「=Sheet1!A2」・・・と、作成する名簿の形式通りに反映されるようにしているBook1を配布しました。 全員に入力してもらったExcelデータが20個あります。 これを1つのExcel(Book2)にまとめたいです。 Book1のSheet2はまとめる時の形式になっているので、これをコピペして20回繰り返しBook2に貼り付ければすぐにできる と思っておりましたが、実際にBook2に貼り付けて見ると、 ='[Book1.xls]Sheet1'!A1 となってしまいました。 どうしたら Book1のSheet2をBook2にコピペするだけで名簿が完成するでしょうか。 Book1のSheet2に表示されている通りにコピーできれば良いのですが・・・。 初心者で申し訳ありません。 どなたかアドバイスいただけますと幸いです。 宜しくお願い致します。

専門家に質問してみよう