エクセルで複数のファイルを統合する方法

このQ&Aのポイント
  • エクセルで複数のファイルを統合する方法について解説します。異なる表を結合させるためには、vlookup関数などを使用することが必要です。
  • 異動情報と給与情報の表を結合させ、個人ごとの台帳のようなものを作成する方法を説明します。各社員のデータを一括管理することができます。
  • エクセルのvlookup関数を使用して、異動情報と給与情報を結合させる手順を詳細に説明します。複数行を対象にしたバージョンのvlookup関数を使うことで、目的の結果を得ることができます。
回答を見る
  • ベストアンサー

エクセルで複数のファイルを統合したい

エクセルについて質問です。 下記のような2つのファイルがあるとします。 1)異動情報 社員番号 社員氏名 日付 部署 33 Aさん 2005/9/1 人事部 Aさん 2006/10/1 総務部 Aさん 2006/12/1 営業部 44 Bさん 2006/9/1 広報部 Bさん 2006/10/1 経理部 55 Cさん 2006/4/1 販売部 2)給与情報社員番号 社員氏名 支給年月 本給 各種手当 残業代・・・ 33 Aさん 2006年4月 100000 50000 20000 Aさん 2006年5月 100000 50000 15000 Aさん 2006年6月 100000 50000 20000 Aさん 2006年7月 100000 50000 15000 Aさん 2006年8月 100000 50000 20000 Aさん 2006年9月 120000 50000 15000 44 Bさん 2006年4月 110000 60000 8000 Bさん 2006年5月 110000 60000 8000 Bさん 2006年6月 110000 60000 8000 Bさん 2006年7月 110000 60000 8000 Bさん 2006年8月 110000 60000 8000 Bさん 2006年9月 110000 60000 8000 55 Cさん 2006年8月 90000 40000 20000 Cさん 2006年9月 90000 40000 20000 この二つの表を合わせて 社員番号33 社員氏名 Aさん 異動情報・・・       給与情報・・・ ****         +++++ ****         +++++ 社員番号44 社員氏名 Bさん 異動情報・・・       給与情報・・・ ****         +++++ ****         +++++ 社員番号55 社員氏名 Cさん 異動情報・・・       給与情報・・・ ****         +++++ ****         +++++ のように個人ごとの台帳のようなものを作りたいと思います。 vlookupのひとつの行だけでなく、複数行を対象にしたバージョンのようなイメージです。 こんなことできますでしょうか。 教えていただけたら幸いです。 よろしくお願いします。

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

  • ベストアンサー
  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.1

マクロを使用すれば可能です。 既存の2つのファイルと新規ファイルを開けた状態で次のマクロを実行します。 Sub TEST() MYBOOK = ActiveWorkbook.Name Workbooks("異動情報.XLS").Activate 異動行 = 2 給与行 = 2 出力行 = 1 Do While Cells(異動行, 2) <> "" 社員番号 = Cells(異動行, 1) 社員名 = Cells(異動行, 2) Workbooks(MYBOOK).Activate Cells(出力行, 1) = "社員番号" Cells(出力行, 2) = 社員番号 Cells(出力行, 3) = "社員名" Cells(出力行, 4) = 社員名 出力行 = 出力行 + 1 出力行2 = 出力行 Cells(出力行, 1) = "異動情報" 出力行 = 出力行 + 1 Do While Workbooks("異動情報.XLS").Worksheets("SHEET1").Cells(異動行, 2) = 社員名 Cells(出力行, 1) = Workbooks("異動情報.XLS").Worksheets("SHEET1").Cells(異動行, 3) Cells(出力行, 1).NumberFormatLocal = "yyyy/m/d" Cells(出力行, 2) = Workbooks("異動情報.XLS").Worksheets("SHEET1").Cells(異動行, 4) 出力行 = 出力行 + 1 異動行 = 異動行 + 1 Loop Cells(出力行2, 3) = "給与情報" 出力行2 = 出力行2 + 1 Do While Workbooks("給与情報.XLS").Worksheets("SHEET1").Cells(給与行, 2) = 社員名 Cells(出力行2, 3) = Workbooks("給与情報.XLS").Worksheets("SHEET1").Cells(給与行, 3) Cells(出力行2, 3).NumberFormatLocal = "yyyy年m月" Cells(出力行2, 4) = Workbooks("給与情報.XLS").Worksheets("SHEET1").Cells(給与行, 4) Cells(出力行2, 5) = Workbooks("給与情報.XLS").Worksheets("SHEET1").Cells(給与行, 5) Cells(出力行2, 6) = Workbooks("給与情報.XLS").Worksheets("SHEET1").Cells(給与行, 6) 出力行2 = 出力行2 + 1 給与行 = 給与行 + 1 Loop If 出力行 < 出力行2 Then 出力行 = 出力行2 End If 出力行 = 出力行 + 1 Workbooks("異動情報.XLS").Activate Loop End Sub

da00774422
質問者

お礼

感動しました! すごいですね! ぜひ利用させていただきます。 ありがとうございました。

関連するQ&A

  • エクセル sheet1の表を一部sheet2に挿入したいのですが。。。

    sheet1にこのような表を作りました。   A   B   C   D   E   F   数字  番号  カナ  氏名  番号  住所    1   2   あ   阿   3    い    4   5   う   有   6    い sheet2に、     A   B   C   D   E     数字  番号  氏名  給与  1月 1    1    2   阿  給与1 2    1    2   阿  税金1 3    1    2   阿  給与2 4               税金2 5               給与3 6               税金3 7               給与4 8               税金4 9               給与合計 10               税金合計 11    4    5   有  給与1 1~10行が1名分で、下に同じものを後350人ぐらい続く表を作成しなければならにのですが、シート1の表をシート2に 挿入するにはどうすればよいですか? 宜しくおねがいします。

  • エクセル2002 複数ファイルをひとつにしたい

    全く同じ書式のファイルがあります。  Aファイル・・・営業部  Bファイル・・・経理部  Cファイル・・・総務部  といった、部署ごとのファイル。 各ファイルのなかは、全く同じ書式で 1シートごとに  1月、2月、3月・・・  と月ごとになっています。 これだと、7月を見るのに部署ごとの全ファイルを開かないと駄目で 結構手間なので、「7月」というファイルをつくって、 A、B、Cの各ファイルから、「7月」のシートをもってきて ひとつまとめたいのですが、可能でしょうか。 なお、A、B、Cの各ファイルは日々データを更新するので 更新するたびに、まとめてる「7月」ファイルも更新させるようにしたいです。 関数はそれなりに理解できますが、VBAは全くの素人です。 よろしくお願いいたします。

  • 複数個のcsvファイルから一気にデータを統合?

    初めて質問させていただきます。 毎日一定の書式が決まった形でデータを管理しております。(出勤簿).出勤者のみの氏名が表記される。 1.ファイル名(2005_1_1.csv)日付 2.シート1 3.列Aに通し番号(1.2・・・・)、列Bに氏名 社員名簿が一応あります。 1.A列に通し番号、B列に氏名(meibo.csv) この形で毎日記録をしておりましたので、データ(csv)ファイルがたくさんたまってしまいました。 そこで、このような複数のデ-タファイルを、社員名簿を元に、出勤日に●をつけるといったことをしたいと思っています。 一気に複数のファイルからデータを吸出し、統計を取ることは可能でしょうか? ちょっとデータの管理で困ってしまっていて、悩んでいます。 具体的な事例などをもしお教えいただけたら幸いです。

  • エクセルで2つのリストを統合するには?

    エクセルの別々のシートにある2つのリストを統合したいのですが、過去の質問などを見てもうまくいきません。具体的には 【表1】 番号 氏名 住所 A 佐藤 東京 B 高橋 神奈川 C 渡辺 埼玉 D 田中 千葉 E 小林 山梨 【表2】 番号 氏名 年齢 B 高橋 22 D 田中 45 という2つの表で、これを 番号 氏名 住所 年齢 A 佐藤 東京 B 高橋 神奈川 22 C 渡辺 埼玉 D 田中 千葉 45 E 小林 山梨 のようにまとめたいのです。 「データの統合」を使ってみましたがうまくいきませんでした。よろしくお願いします。

  • Excelの検索について

    シート1に、 A列 B列 C列 …G列 氏名 番号 年月日1 …年月日2 が入力されています。 B列[番号]が"3"のときのみ、それと同じ行のA列[氏名]、C列[年月日1]、G列[年月日2]をシート2に、上から詰めて返す方法を教えてください。 難しく考えずに、VLOOKでいけるのでしょうか。

  • エクセルの複数条件に一致したセルを抽出したいのですが、関数で教えてくだ

    エクセルの複数条件に一致したセルを抽出したいのですが、関数で教えてください。                A列   B列    C列 Aファイルには 行 【注文月日】、【氏名】、【商品金額】が記入されています。 Bファイルには 行 【注文月日】、【氏名】、【税金額】が記入されています。 AファイルのD列に、Aファイルの【注文月日】かつ【氏名】がBファイルの【注文月日】かつ【氏名】と一致する場合のBファイルC列の【税金額】を表示したいのです。 VLOOKUP関数では条件が1つだけなので使用できませんが、似たような関数で複数条件ができる関数があるなら教えてください。

  • 複数行あるExcelのある列の情報を統合したい

    以下のことを、Excel2010のVBAで実施したいのですが、どなたかご教示いただけないでしょうか。 これまで、VBAを自身で作成したことがなく、お手上げ状態につき、どうかよろしくお願いします。 実施したいことは、下記または添付画像のように、 「品名」(A列)、「品番」(B列)および他の列項目(###)のデータが完全一致の場合、ひとつの行に統合して、「エラー番号」(列D)のデータを列Dの中で、セミコロン区切りで結合させる、 です。 ・統合元となった行は、「エラー番号」の統合後に削除する。 ・「品名」AAAの「エラー番号」NO333のように統合後の「エラー番号」にダブリが残っても構いません。 ・件数の上限はありません(Excel2010の上限1048576まで対象行があると想定) ・他の項目(###)は複数あるのですが、「エラー番号」の列がD列という前提でお願いします。 【VB実行前】 列A 列B 列C 列D 品名 品番 ### エラー番号 AAA A123 ### NO111;NO333 BBB B123 ### CCC C123 ### NO111 AAA A123 ### NO222;NO333 CCC C123 ### NO555 AAA A12345 ### NO222 CCC C12345 ### NO111 AAA A123 ### NO999 【VB実行後】 列A 列B 列C 列D 品名 品番 ### エラー番号 AAA A123 ### NO111;NO333;NO222;NO333;NO999 BBB B123 ### CCC C123 ### NO111,NO555 AAA A12345 ### NO222 CCC C12345 ### NO111

  • ExcelのMATCH関数での列指定

    エクセルで作られた社員名簿のデータを別シートにINDEX関数を使って抜き出したいのですが、MATCH関数での列指定が上手くいきません。 表は    A    B     C     D     E     F 1 社員番号 社員氏名A 家族1氏名 家族1年齢 家族2指名 家族年齢 2 社員番号 社員氏名B 家族1氏名 家族1年齢 家族2指名 家族年齢 3 社員番号 社員氏名C 家族1氏名 家族1年齢 家族2指名 家族年齢 と、社員1名につきその家族が一行で表示されています。 これを別シートに家族1名につき一行の表があるので、年齢だけをこの表から持っていきたいのですが、一行に複数の家族がいるので、MATCH関数での列指定が上手くいきません。何かいい方法はないでしょうか?

  • エクセルでアクセスの機能が使えますか?

    次のような機能はアクセスでは一発で出来るのですが、今の会社のパソコンにはアクセスが入っておらず、しかもお金がかかるという理由で買ってもらえません。プログラムを組めば出来るものでしょうか? やりたい事 シート1 A:社員番号 B:氏名 C:学歴 D:入社年月日 シート2 A:社員番号 B:住所 C:電話番号 シート1と2のデータを社員番号をキーにして下のような1つのデータベースを作りたいのです。 シート3 A:社員番号 B:氏名 C:住所 D:入社年月日 アクセスでしたら、簡単に出来るのですが。。。エクセルでイチイチ貼り付けて処理をしているのですが、時間もかかるし、間違いも多くちょっと困っています。 何かいいアイディアがありましたら、教えて下さい。

  • エクセルでの行列の入換え

    エクセルの表で A B    C 1 970701 ○○ 1 001001 △△ 1 010801 ×× 2 980701 ●● 2 021001 ☆☆ となってる表を A B     C   D   E    F   G  1 970701 ○○ 001001 △△ 010801 ××× 2 980701 ●● 021001 ☆☆ と入換えたいです。 Aのセルは社員番号で、3行もあれば、10行もあります。 行列を入換えて貼り付けていったのですが、 もっと簡単な方法がありますでしょうか? よろしくお願いします。