- ベストアンサー
「Excel」で、異なるブックのデータを一つにまとめたい。
「エクセル2000」を使用しています。 異なるブックのデータを、うまく一つにまとめる 方法があるかどうか、お教え頂きたいのですが…。 「Book1.xls」には A列に名前 B列に部署名 が、それぞれ入っています。 「Book2.xls」には A列に名前、 B列に内線番号 が入っているとします。 そこで、「Book1」のそれぞれの名前の行に 「Book2」の「内線番号」を表示させたいのですが… そんな事は可能でしょうか? 「Book1」と「Book2」の「名前」のデータは、 ほぼ同じものが入っているのですが 並び順は異なっています。 (「並べ替え」を行ったとしても、 「Book2」の方が遥かにデータ量が多いので、 どうしても行は一致しません) 「同じデータを探して貼り付ける」 という作業が必要になると思うので、 やはり難しいでしょうか…。 ご助言願います。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
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列に内線番号が入ってきます。
その他の回答 (6)
- koichi8
- ベストアンサー率0% (0/1)
簡単には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等で保存するといいでしょう
お礼
お礼が遅くなってすみません。 データ件数が多いので、手動でやるというのは 少し難しそうです。 そして質問文には書いていないのですが、 それぞれのデータをしばしば更新するので…。 回答、ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
既に両ブックは出来あがっていて、現在で締め切って、両者を融合して良いのですね。今後の行(レコード)の増減 はひとまず考慮しないで良いと言うことですね。 ブック1,2にはシートは1枚しかないのでしょうか。 複数だと更に面倒になる。 こう言うのは、(1)昔からある、バッチ処理のマッチングのロジックで処理するか(2)アクセスなどのSQLなどで処理する、 問題です。 エクセルでやるにしてもVBAを使う問題です。 VLOOKUP関数は該当の2つ目以後を探せないので、使えるかどうか。 以上がなじみがないのなら、手動で第3のシートに「ブック1のSheet1のデータ」と、「ブック2のSheet1のデータ」を貼りつけて統合し、それを名前順でソートする。それから1行にまとめることを関数で考える。 それと名前、部書名、内線番号と言うのは本当の例ですか、例えですか。内線番号が1名に2つ以上多数あるのは 考えられないが。
お礼
お礼が遅くなってすみません。 「本当の例」なのですが、 実は大分端折って書かせて頂きました。 本当のところ、データが増えたり、更新したりと 様々な問題はあるのですが… とりあえず、VLOOKUPと 簡単なマクロの組み合わせで なんとかしてみます。 (VLOOKUPの事が何故かすっかり頭から 抜けていました。あまり関数を使わないもので…) 回答、ありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
book1に名前と部署名の対応表があり、 その表の範囲を「部署」という名前で範囲名を付けてあるとします。 book2に名前と内線番号の対応表があり、 その表の範囲を「内線」という名前で範囲名を付けてあるとします。 その時 book3で 名前、部署、内線の結合した表を作成するには メニューから「データ」~「外部データの取り込み」~「新しいデータベースクエリ」で 取込先でエクセルファイル、book1かbook2かどちらかを選びます、 範囲名が表示されるので、そのまま、「>」で右窓へ移して完了します。 SQLの作業ウインドウが開くので、そこで、新しい「テーブル」~「テーブルの追加」、 もう一つのブックと範囲名を取り込みます。 SQLボタンを押して SQLステートメントを下記を参考に編集します SELECT 内線.名前, 部署.部署, 内線.内線 FROM `D:\Excel\book2`.内線 内線, `D:\Excel\book1`.部署 部署 WHERE 部署.名前 = 内線.名前 ORDER BY 内線.名前 作業ウインドウを閉じると、クエリの保存をして、 シートに取り込み位置をしていしたら、 結合したデータが得られます。 book1,boo2が更新された場合、 範囲が変わっていたら範囲を変える必要がありますが、範囲が変わっていない場合、内容が変わっても特にbook1,book2は、いじる必要がありません。 book3で、「データ」~「データの更新」で更新することができます。
お礼
お礼が遅くなってすみません。 こんな機能があるんですね。 初めて知りました。 accessみたいなカンジでしょうか? これから色々とやってみたいと思います。 回答、ありがとうございました。
- taocat
- ベストアンサー率61% (191/310)
Book2のデータ範囲を A2-B99 とした場合。 Book1とBook2両方とも開いた状態で Book1の C2 に次の式を入れ必要行コピー。 =VLOOKUP(A2,[Book2.xls]Sheet1!$A$2:$B$99,2,0) Book1,Book2ともデータは、それぞれのSheet1にあるもとする。 以上です。
お礼
お礼が遅くなってすみません。 VLOOKUPの事をすっかり忘れていました。 (あまり関数を使う事がないので…) 事情により並べ替えが出来ない等々の 問題はあるのですが、作業用シートを作ったり マクロの自動登録などを組み合わせたりすれば、 なんとかなりそうです。 回答、ありがとうございました。
- 12SA
- ベストアンサー率19% (4/21)
vlookup関数で出来るのではないでしょうか。
お礼
お礼が遅くなってすみません。 VLOOKUPの事をすっかり忘れていました。 (あまり関数を使う事がないので…) 事情により並べ替えが出来ない等々の 問題はあるのですが、作業用シートを作ったり マクロの自動登録などを組み合わせたりすれば、 なんとかなりそうです。 回答、ありがとうございました。
- haruka1234567890
- ベストアンサー率18% (120/666)
まず、新規ブックか、どちらかのブックにシートをまとめましょう。 で、 VLOOKUP関数で、内線番号を検索すれればいいかと思います。
お礼
お礼が遅くなってすみません。 VLOOKUPの事をすっかり忘れていました。 (あまり関数を使う事がないので…) 事情により並べ替えが出来ない等々の 問題はあるのですが、作業用シートを作ったり マクロの自動登録などを組み合わせたりすれば、 なんとかなりそうです。 回答、ありがとうございました。
お礼
お礼が遅くなってすみません。 VLOOKUPの事をすっかり忘れていました。 (あまり関数を使う事がないので…) 書いて下さったのは、エラー表示が 出ない方法ですね? 回答、ありがとうございました。