- ベストアンサー
複数のエクセルブックのデータをまとめる方法
先日、エクセル2級の試験に受かり、その関係でデータ整理のアルバイトに入ることになりました。 csvでデータを取り込み、処理をしたのですが、過去データと合わせて12000件ほどあります。 項目を登録ナンバーで整理しているデータですが、同じ登録ナンバーで整理している別データを、その12000件にぶつけてまとめてほしいと言われました。 つまり、最初のAというデータとBというデータの、登録ナンバーの同じものが一緒になるようにするには、どうしたらいいでしょうか? AとBの登録ナンバーは同じ数だけある訳ではありません。AにはあってBにはない登録ナンバー、また逆もあります。 登録データ →Aに入っているデータ →Bに入っているデータという順に入る方法はあるでしょうか? 自分で考えた方法では、どちらのデータを昇順に並べて、登録番号をひとつずつ確認してコピーペーストをするまでしか考えられなかったのですが、約12000件×4つのブックだと、気が遠くなりそうな作業になってしまいます。 説明が分かりづらいかとは思いますが、分からないことは補足しますので、どうぞよろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No5です。Vlookup関数についてはご存知でしょうか。 >というのはA以外のデータをまだいただいていないので >Aの登録ナンバーに連動させて、Bのデータを後ろの列に反映させる方法 の部分だけですが Aのデータにシートを一枚追加して、仮のBデータ作成してみてください >シート名「Aデータ」 >A列:登録ナンバー B列:氏名 C列:郵便番号 D列:住所 E列:電話番号 >シート名「Bデータ」 >A列:登録ナンバー B列:アンケート結果 AデータのF列に =VLOOKUP(A2,Bデータ!A:B,2,FALSE) と入れて下までコピィします。 AデータのA列に値を、BデータのA列から検索して、その隣(B列)の値が引っ張ってこれます。 同様にBデータのC列に =VLOOKUP(A2,Aデータ!A:B,2,FALSE) と入れて下コピィして エラー表示された行がAデータに登録されていない登録番号ということになります。 詳しくは、エクセルのHelpで、VLOOKUPで検索して確認してみてください。
その他の回答 (5)
- hallo-2007
- ベストアンサー率41% (888/2115)
No1です。失礼しました。最初の回答はスルーしてください。 いまひとつ疑問ですが。 >AにはあってBにはない登録ナンバー、また逆もあります。 >約12000件×4つのブックだと、気が遠くなりそうな作業 これはどう理解すればよろしいでしょうか 1、AにはあってBにはない登録ナンバー=> 登録している方でアンケートに回答しなかった方がいる 2、また逆もあります。=> 住所もわからないのに登録ナンバーがある方から回答があった。 1だけならVLOOKUP関数で簡単に処理できそうですが、2が加わるとちょっと厄介です。 Aデータ、Bデータ以外にも何かあるのでしょうか? 補足しておいて方が良いと思います。
お礼
こちらこそ、説明が不十分で誤解を招くことになってしまい、申し訳ありませんでした。 引き続きのアドバイスありがとうございます。 どうぞよろしくお願いします。
補足
ありがとうございます。 質問の件なのですが、4つのブックは登録ナンバーを基にして、それぞれの部署が必要なデータをはじき出したものと聞いています。 母体となる大元のデータは、登録ナンバーによって管理されているもので、場合によっては日替わりでとあるナンバーが削除されたり、登録されたりするものですから、4つのデータの集計時期が同じ日に一斉に出力したものではないので、変わっていると思います。 思います、というのはA以外のデータをまだいただいていないので、実際の数をまた把握していないからなのです。 項目をハッキリかければ納得してもらえるのではないかと思うのですが、個人情報その他の問題があり、書けないことが心苦しいです。 ので、それぞれのデータで若干の差異があると理解しているのですが、それはもしかしたら解決する方法があるかもしれません。 ので、登録ナンバーに差異がない場合(しかし順番はバラバラ)の方法でも構いませんので、Aの登録ナンバーに連動させて、Bのデータを後ろの列に反映させる方法がありましたら、どうぞご教授お願いします。
- n-jun
- ベストアンサー率33% (959/2873)
「Aデータ」・「Bデータ」と言うのが、 例えば同じBookの、シート名「Aデータ」とシート名「Bデータ」にそれぞれあり、 シート名「Aデータ」 A列:登録ナンバー B列:氏名 C列:郵便番号 D列:住所 E列:電話番号 シート名「Bデータ」 A列:登録ナンバー B列:アンケート結果 ⇒1行目は項目行 となっているものをシート名「まとめ」に、 A列:登録ナンバー B列:氏名 C列:郵便番号 D列:住所 E列:電話番号 F列:アンケート結果 ⇒1行目は項目行 としたい。 登録ナンバーは"A000123456"と言う"半角英字1文字+半角数字9文字"で構成されてます。。。。 -------------------------------- と言ったようなブック・シート・セル・データ形式・・・の情報が必要なのでしょう。 私は試験を受けた事ないのでどの位のスキルをお持ちかよく分かりませんが、 回答者はExcelファイルを見られないと言う事はわかります。
お礼
>シート名「Aデータ」 >A列:登録ナンバー B列:氏名 C列:郵便番号 D列:住所 E列:電話番号 >シート名「Bデータ」 >A列:登録ナンバー B列:アンケート結果 >⇒1行目は項目行 >となっているものをシート名「まとめ」に、 >A列:登録ナンバー B列:氏名 C列:郵便番号 D列:住所 E列:電話番号 F列:アンケート結果 >⇒1行目は項目行 >としたい。 はい、その通りです。 わかり易い書き方をしていただき、ありがとうございます。 >登録ナンバーは"A000123456"と言う"半角英字1文字+半角数字9文字"で構成されてます。。。。 登録ナンバーは半角数字10文字になります。 エクセルはこのパソコン教室で使うのはほぼ初めてで、行ったことは主に関数を用いて表の中に数値を導き出す作業と、グラを作る作業、データの抽出などでした。 本当はここの欄に仮で作ったものでもエクセル表が貼り付けられればいいのですが、それをしてもいいのか、する場合はどのような操作で行うかなどが分からず、拙い表現になってしまいました。 表現方法として、こういう形が分かるやすいのだと言うことがよく分かりました。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
質問の仕方として、AはBといわず、ブック、シート、行、列、セルをはっきりさせて、実例的なものを示して、どうしたいのか説明すること。そして各列にはどういう項目が入っているか明らかにすること。 ーー >csvでデータを取り込み、処理をしたのですが エクセルには取り込んだのか? >12000件ほどあります ブックの数、シートの数はどれぐらい? >別データを、 どういう風になっているのか?別ブック?別シート? >ぶつけてまとめてほしいと言われました まとめるとは、登録ナンバーをキーにしてマッチングし、項目は どのようにまとめるのか? >AとB AとBとは?シート?ブック? >登録データ →Aに入っているデータ →Bに入っているデータという順に入る方法はあるでしょうか? なにかサインを立てる必要はあろうが、両方バッティングする項目は無いのか。その際はどちらを優先するのか? >登録番号をひとつずつ確認してコピーペーストをするまでしか考えられなかったのですが、 問題外の対処法。 ーー 結局こういう会社団体なの仕事の処理ははVBA(エクセル用のプログラム)を組めないと、関数では姑息(複雑)な方法になるように思うが、VBAは出来ないだろうから、本当は無理な課題という面がある。 データベースソフトを使ってやる課題という面がある。 ーー プログラムが出来るならCSVの段階で累積する方法もある。
補足
アドバイスをありがとうございます。 そうですね、質問の仕方をもっと具体的に書いたほうが良かったですね。 個人情報に関することでしたので、どこまで書いていいものか判断がつかず、分かりづらくて申し訳ありませんでした。 住所、氏名ぐらいであれば問題なかったかと、指摘されて気がつきました。 ありがとうございます。 CSVデータは全てエクセルに取り込んでいます。 ブックは4つで、シートも1枚ずつ、全て別ブックになっているようです。(週明けに私のところにデータが揃う予定です。自分で作ったもの以外は内容を聞いただけでまだ実物は見ていません) >まとめるとは、登録ナンバーをキーにしてマッチングし、項目は どのようにまとめるのか? 「Aデータ」 登録ナンバー 氏名 郵便番号 住所 電話番号 「Bデータ」 登録ナンバー アンケート結果 これを 登録ナンバー 氏名 郵便番号 住所 電話番号 アンケート結果 このようにしたいと考えています。 >AとBとは?シート?ブック? 1ブック1シートなので、ブックでありシートでもあります。 >両方バッティングする項目は無いのか。その際はどちらを優先するのか? 基本的にはないと思いますが、バッティングした場合はAデータが基本なので、Aデータを優先します。 >結局こういう会社団体なの仕事の処理ははVBA(エクセル用のプログラム)を組めないと、関数では姑息(複雑)な方法になるように思う。 そうですか。 VBAというプログラムがあるのですね。 そのことも含めて、月曜日上司に相談してみます。 それで、プログラムが出来るなら、CSVの段階で累積する方法があるとのことですが、これはVBAを使ってCSVからエクセルに落とす段階からやり直す方法ということでよろしいでしょうか? 教えていただければと思います。よろしくお願いします。
- gyouda1114
- ベストアンサー率37% (499/1320)
Aのデータ、Bのデータの順に同じ登録ナンバーを並べると言うことですね 登録ナンバーが数値であれば Aデータの次にBデータが並んでいること確認するため作業列を使います。 Aデータ、BデータそれぞれにA列を挿入します。AデータのA列に=B1入力し、データ入力行すべてにオートフィル、BデータのA列に=B2+0.1として小数点をつけ、すべての行にオートフィル。 BデータをAデータの下にコピー貼り付け 列Aを最優先されるキーとして並べ替えAデータの登録ナンバー Bデータの小数点付き登録ナンバーの順に並べ替えられる。 念のため、新しいシートにAデータBデータをコピーして お試しください。
補足
早速のアドバイスをありがとうございます。 そして私のつたない文章でうまく伝えられずに申し訳ありませんでした。 実は行いたい方法は 「Aデータ」 登録ナンバー 氏名 郵便番号 住所 電話番号 「Bデータ」 登録ナンバー アンケート結果 これを 登録ナンバー 氏名 郵便番号 住所 電話番号 アンケート結果 という風に並べる方法を探しています。 登録ナンバーはどちらのデータも順不動になっているのと、AとBであるデータとないものがあります。 このような形なのですが、方法はあるでしょうか? どうぞよろしくお願いいたします。
- hallo-2007
- ベストアンサー率41% (888/2115)
色々手法はあると思いますが、1案です 4つのブックのデータを新しいブックの一枚のシートに全て貼り付ける 12000件X4 48000行 登録ナンバーの列を別のシートのコピィします。 A B 登録ナンバー 100000 100001 100003 100001 ・・・・ B列に =COUNTIF(A$1:A1,A1) と入れて下までコピィ(セル右下にマウス移動して+になったらダブルクリック) オートフィルター で B列が2以上に絞込み 表示されている行を全て削除 オートフィルター 解除 すると ダブりのないデータになりますので、 後は、VLOOKUP関数ででもデータのシートから引っ張ってくる。 如何でしょうか。
補足
早速のアドバイスをありがとうございます。 説明がつたなく、わかりづらく申し訳ありません。 教えていただいたのは、AデータとBデータのダブリをなくして、 A ↓ B と並べる方法ということでよろしいでしょうか? 実は行いたい方法は 「Aデータ」 登録ナンバー 氏名 郵便番号 住所 電話番号 「Bデータ」 登録ナンバー アンケート結果 これを 登録ナンバー 氏名 郵便番号 住所 電話番号 アンケート結果 という風に並べる方法を探しています。 登録ナンバーはどちらのデータも順不動になっているのと、AとBであるデータとないものがあります。 このような形なのですが、方法はあるでしょうか? どうぞよろしくお願いいたします。
お礼
再度ありがとうございます! 実際のデータは持ち出し禁止なので、ごく簡単な表を作ってやってみたのですが出来ました。 実際のデータをまだ見ていないので、実際に使ってみないと分かりませんが、とりあえず私の疑問は解決しました。 試験対策でVLOOKUPは散々使ったのに、いざ実践になると活用できないものです。 これから精進して頑張りたいと思います。 ありがとうございました!