• ベストアンサー

「Excel」で、異なるブックのデータを一つにまとめたい。

「エクセル2000」を使用しています。 異なるブックのデータを、うまく一つにまとめる 方法があるかどうか、お教え頂きたいのですが…。 「Book1.xls」には A列に名前 B列に部署名 が、それぞれ入っています。 「Book2.xls」には A列に名前、 B列に内線番号 が入っているとします。 そこで、「Book1」のそれぞれの名前の行に 「Book2」の「内線番号」を表示させたいのですが… そんな事は可能でしょうか? 「Book1」と「Book2」の「名前」のデータは、 ほぼ同じものが入っているのですが 並び順は異なっています。 (「並べ替え」を行ったとしても、 「Book2」の方が遥かにデータ量が多いので、 どうしても行は一致しません) 「同じデータを探して貼り付ける」 という作業が必要になると思うので、 やはり難しいでしょうか…。 ご助言願います。

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

  • ベストアンサー
回答No.3

No1の補足です Book1.xlsとBook2.xlsを立ち上げてください Book2.xlsのA列とB列全体を選択しコピー。 (列番号をクリックすると、列全体が選択できます) Book1.xlsのD、E列全体へ貼り付けます (D1を選択した状態で、エンターキーでも可能) これでBook1.xlsにデータが集まりました。 次に Book1.xlsのC1に =IF(ISERROR(VLOOKUP(A1,D:E,2,FALSE)),"",VLOOKUP(A1,D:E,2,FALSE)) と打ち込み、 A列にデータが入っているところまで複写します。 すると、C列に内線番号が入ってきます。

mami0810
質問者

お礼

お礼が遅くなってすみません。 VLOOKUPの事をすっかり忘れていました。 (あまり関数を使う事がないので…) 書いて下さったのは、エラー表示が 出ない方法ですね? 回答、ありがとうございました。

その他の回答 (6)

  • koichi8
  • ベストアンサー率0% (0/1)
回答No.7

簡単にはBook1.xls とBook2.xlsを開く 2つのbookをA列名前でソートしておきます book2のAB列をコピー Book1のCD列に貼り付けます Book1にABCD列ができます A列とC列に名前が入ってますので2つの名前を一致させます C列の方が多いので AとCで名前が不一致のところでA列に空白を挿入する  例えばA10を下にずらせるにはA10セルをクリック  右クリックで 挿入 下方向にシフト  でそこから下がすべて下にひとつずれます AC列の名前が一致したらC列を削除  Cをクリックして 右クリック 削除 これで 出来ると思いますがどうでしょうか 出来たら 別の名前Book3.xls等で保存するといいでしょう

mami0810
質問者

お礼

お礼が遅くなってすみません。 データ件数が多いので、手動でやるというのは 少し難しそうです。 そして質問文には書いていないのですが、 それぞれのデータをしばしば更新するので…。 回答、ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

既に両ブックは出来あがっていて、現在で締め切って、両者を融合して良いのですね。今後の行(レコード)の増減 はひとまず考慮しないで良いと言うことですね。 ブック1,2にはシートは1枚しかないのでしょうか。 複数だと更に面倒になる。 こう言うのは、(1)昔からある、バッチ処理のマッチングのロジックで処理するか(2)アクセスなどのSQLなどで処理する、 問題です。 エクセルでやるにしてもVBAを使う問題です。 VLOOKUP関数は該当の2つ目以後を探せないので、使えるかどうか。 以上がなじみがないのなら、手動で第3のシートに「ブック1のSheet1のデータ」と、「ブック2のSheet1のデータ」を貼りつけて統合し、それを名前順でソートする。それから1行にまとめることを関数で考える。 それと名前、部書名、内線番号と言うのは本当の例ですか、例えですか。内線番号が1名に2つ以上多数あるのは 考えられないが。

mami0810
質問者

お礼

お礼が遅くなってすみません。 「本当の例」なのですが、 実は大分端折って書かせて頂きました。 本当のところ、データが増えたり、更新したりと 様々な問題はあるのですが… とりあえず、VLOOKUPと 簡単なマクロの組み合わせで なんとかしてみます。 (VLOOKUPの事が何故かすっかり頭から 抜けていました。あまり関数を使わないもので…) 回答、ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

book1に名前と部署名の対応表があり、 その表の範囲を「部署」という名前で範囲名を付けてあるとします。 book2に名前と内線番号の対応表があり、 その表の範囲を「内線」という名前で範囲名を付けてあるとします。 その時 book3で 名前、部署、内線の結合した表を作成するには メニューから「データ」~「外部データの取り込み」~「新しいデータベースクエリ」で 取込先でエクセルファイル、book1かbook2かどちらかを選びます、 範囲名が表示されるので、そのまま、「>」で右窓へ移して完了します。 SQLの作業ウインドウが開くので、そこで、新しい「テーブル」~「テーブルの追加」、 もう一つのブックと範囲名を取り込みます。 SQLボタンを押して SQLステートメントを下記を参考に編集します SELECT 内線.名前, 部署.部署, 内線.内線 FROM `D:\Excel\book2`.内線 内線, `D:\Excel\book1`.部署 部署 WHERE 部署.名前 = 内線.名前 ORDER BY 内線.名前 作業ウインドウを閉じると、クエリの保存をして、 シートに取り込み位置をしていしたら、 結合したデータが得られます。 book1,boo2が更新された場合、 範囲が変わっていたら範囲を変える必要がありますが、範囲が変わっていない場合、内容が変わっても特にbook1,book2は、いじる必要がありません。 book3で、「データ」~「データの更新」で更新することができます。

mami0810
質問者

お礼

お礼が遅くなってすみません。 こんな機能があるんですね。 初めて知りました。 accessみたいなカンジでしょうか? これから色々とやってみたいと思います。 回答、ありがとうございました。

  • taocat
  • ベストアンサー率61% (191/310)
回答No.4

  Book2のデータ範囲を A2-B99 とした場合。 Book1とBook2両方とも開いた状態で Book1の C2 に次の式を入れ必要行コピー。 =VLOOKUP(A2,[Book2.xls]Sheet1!$A$2:$B$99,2,0) Book1,Book2ともデータは、それぞれのSheet1にあるもとする。   以上です。

mami0810
質問者

お礼

お礼が遅くなってすみません。 VLOOKUPの事をすっかり忘れていました。 (あまり関数を使う事がないので…) 事情により並べ替えが出来ない等々の 問題はあるのですが、作業用シートを作ったり マクロの自動登録などを組み合わせたりすれば、 なんとかなりそうです。 回答、ありがとうございました。

  • 12SA
  • ベストアンサー率19% (4/21)
回答No.2

vlookup関数で出来るのではないでしょうか。

mami0810
質問者

お礼

お礼が遅くなってすみません。 VLOOKUPの事をすっかり忘れていました。 (あまり関数を使う事がないので…) 事情により並べ替えが出来ない等々の 問題はあるのですが、作業用シートを作ったり マクロの自動登録などを組み合わせたりすれば、 なんとかなりそうです。 回答、ありがとうございました。

回答No.1

まず、新規ブックか、どちらかのブックにシートをまとめましょう。 で、 VLOOKUP関数で、内線番号を検索すれればいいかと思います。

mami0810
質問者

お礼

お礼が遅くなってすみません。 VLOOKUPの事をすっかり忘れていました。 (あまり関数を使う事がないので…) 事情により並べ替えが出来ない等々の 問題はあるのですが、作業用シートを作ったり マクロの自動登録などを組み合わせたりすれば、 なんとかなりそうです。 回答、ありがとうございました。