• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2つのエクセルから同じデータを持つ行を出力する方法)

エクセルで二つのファイルから同じデータを取りだす方法

piroin654の回答

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

最近、ほぼ同様の質問に3件回答しています。 以下の最初は例を示しただけですが、後の 二つはコードを提示しています。3番目は No4の回答が最終形です。 http://oshiete1.watch.impress.co.jp/qa6401016.html http://oshiete1.watch.impress.co.jp/qa6439871.html http://oshiete1.watch.impress.co.jp/qa6441019.html 縦のものを横に、あるいは横のものを縦に、 あるいは、Keyワードで検索し、データを 加工し、移動、などいろいいろですが、 実際には基本的なことは同じで、いくつか 細かい調整を行なえばデータが取れます。 ただ、細かい調整というのが曲者ですが。 今回の質問は他より少し複雑ですが。一応 動作しています。 方法は他にもあります。データ量が尋常でなければ 他の手段もありますが、ベタな方法ですが、 一応これで確認してみてください。 データの由来を表示したいということで 一番最後の列にそれぞれのデータの由来を 入れます。 一応、検索はA列を対象にします。 Sub test1() Dim wkA As Workbook Dim wkB As Workbook Dim wkC As Workbook Dim LA As Long Dim RA As Long Dim LB As Long Dim RB As Long Dim RC As Long Dim xA As Long Dim yA As Long Dim xB As Long Dim yB As Long '変数の初期化 RC = 0 'Bookの設定 Set wkA = Workbooks.Open(ThisWorkbook.Path & "\ファイルA.xls") Set wkB = Workbooks.Open(ThisWorkbook.Path & "\ファイルB.xls") Set wkC = ThisWorkbook 'ファイルA、Bの最終行、最終列の取得 xA = wkA.Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row '最終行 yA = wkA.Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column '最終列 xB = wkB.Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row '最終行 yB = wkB.Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column '最終列 'ファイルAのデータを元にファイルBのデータを検索 'ファイルAのA列を検索 For RA = 1 To xA 'ファイルBのA列を検索 For RB = 1 To xB '同じデータが見つかった場合の処理開始 If wkB.Sheets("Sheet1").Cells(RB, "A").Value = wkA.Sheets("Sheet1").Cells(RA, "A") Then RC = RC + 1 For LA = 1 To yA wkC.Sheets("Sheet1").Cells(RC, LA) = wkB.Sheets("Sheet1").Cells(RA, LA).Value Next LA '最後の列にA由来を表示 wkC.Sheets("Sheet1").Cells(RC, LA) = "A" For LB = 1 To yB wkC.Sheets("Sheet1").Cells(RC + 1, LB) = wkB.Sheets("Sheet1").Cells(RB, LB).Value Next LB '最後の列にB由来を表示 wkC.Sheets("Sheet1").Cells(RC + 1, LB) = "B" RC = RC + 1 End If Next RB Next RA End Sub コードの張り間違いはないと思いますが、 一応動作を確認してください。 コードの内容の説明は最初に書いたリンク先の 2、3番目に書いてあります。内容的には 同じなのですが、もしわからないところが あれば補足してください。

tsubame_fun
質問者

お礼

ありがとうございます。 私には難易度が高かったのですが、大変勉強になりました。 とても助かりました。

関連するQ&A

  • エクセルのデータを1行ずつ別々にしたい。

    次のような1列のデータを2列に変更したいのです。 エクセルの初心者なものでいろいろ工夫してみましたがうまくいきません。良い方法を教えてください。データは1000行くらいあります。 元のデータ 1 あ 2 a 3 い 4 b 5 う 6 c ほしいデータ 1 あ    a 2 い    b 3 う    c 4 え    d 5 お    e 6 か     f どうぞ、よろしくお願いします。

  • エクセルの住所録データから郵便番号を引き出す方法はありますか?

    エクセルの住所録データから郵便番号を引き出す方法はありますか? A列に氏名B列に住所C列に電話番号が入力されています。 できればB列に郵便番号を一括変換で入力をしたいのですが・・・ エクセルで不可能であればフリーソフトでそのようなものがあればありがたいのですが・・・ よろしくお願いします。

  • Excel 二つの表を用いたデータ整理

    かなり困っています。 (1)二つのエクセル表が存在 (2)ファイル1には↓のようにデータが並んでいます    A列  B列  C列  D列    生徒A 生徒B 生徒C 生徒D 行1 国語27 国語34 国語54 算数34 行2 数学36 家庭25 算数23 理科23 行3 理科55 理科44 理科21 英語44 行4 社会87 社会33 社会32 行5 英語54  (3)ファイル2は以下のようになっています    A列  B列  C列  D列  E列        国語  算数  理科  社会 行1 生徒A 27   36   55   87 行2 生徒B  (4)要するに、ファイル1のデータから必要な数値を抽出して ファイル2のデータに移し変えたいのですが、ファイルAの中の名称とデータ数が異なる場合があることもあり、整理はコピペしかないのかと半ばあきらめています。 とはいえデータの数は4000…正直なきたいです…何かいい方法はありませんか?

  • エクセル VBA データ並び替えと行削除

    エクセル2003にて VBA初心者です。 以下のようなデータがあります。  列A    列B     列C  識別   部品番号  ユニット         A10000   *100         A10001   *101         A10002   *102  *     A10002   *103         A10003   *104  *     A10003   *105  *     A10003   *106  ・        ・      ・  ・        ・      ・  ・        ・      ・ 列Bには部品番号が、列Cにはユニット名が記入されています。 同じ部品番号でもユニットが異なる場合には、列Aに*が記入されています。 このようなデータが20,000行ほどあります。 上記のようなデータを以下のように並べ替えたいと考えております。  列A    列B      列C     列D     列E  識別   部品番号   ユニット   ユニット  ユニット        A10000    *100        A10001    *101        A10002    *102     *103        A10003    *104     *105     *106 VBAを利用すればできるんだろうなーと思っていますが、 見当もつきません。 どうぞよろしくお願いいたします。

  • Excelで、同一データ行を知るには

    Excel2000で、 A列からD列までまったく同じデータの場合、色をつけてくれる方法を教えてください。 例えば、 A20=A100 かつ B20=B100 かつ C20=C100 かつ D20=D100 の場合、同じデータとして、20行目と100行目に色をつけるようにしたいです。 次善の策として、 A列からD列だけでなく、E列以降もすべてまったく同じデータの場合でもいいです。 なお、ソートしたり、行の順番を変えるのはナシにしてください。 また、A列からD列のデータをくっつけるのも、できれば避けたいです。(それぞれの列を比較して異なる場合でも、くっつけたら同じになる場合もありうるので。)

  • Excel データの抽出について教えて下さい。

    初めて質問させて頂きます。 Excelでデータの抽出と言ったらいいでしょうか・・・ 「一定の条件に当てはまった場合に、別のセルに数字を入力する」 というような処理をしたいのですが、データ量が多くて、 どのようにやったら効率がいいのか、頭を悩ませています。 例えば・・・       A列  B列 1行目  111   A 2行目  112   B 3行目  115   C 4行目  115   C 5行目  118   D といったようなデータが1500件ほどあります。 このデータを使って、A列の中で番号が2つ(又は3つ等)あるものに、      A列   B列  C列 1行目  111   A 2行目  112   B 3行目  115   C    1 4行目  115   C    1 5行目  118   D といった感じで決まった数字を表示する方法がないでしょうか? こんな説明でご理解頂けるかどうか、心配なんですが・・・。 いい方法をご存知の方がいらっしゃいましたら、力を貸して下さい。

  • EXCELでのデータ整理

    縦に長いデータ列があり、その先頭の行には文字が入ってます。 その後に数値が縦にズラッと並んでいます。 この縦に並んだデータ列を一括で規格化したいと思ってます。 (できれば列の最後に、最大値を残したいです。) あまりプログラムとかわからないので、よろしくお願いします。 こんな感じになればいいなぁ~と思ってます。 ↓ A B C(←EXCELの列番号) _______ a b c 4 1 5 4 4 0 2 2 4 0 1 2  ↓変換後 A  B  C(←EXCELの列番号) _______ 1.0 0.25 1.0 1.0 1.00 0.0 0.5 0.50 0.8 0.0 0.25 0.4 4   4  5 (←それぞれの列の最大値) 私もVisual Basicを使って頑張ってみたいと思ってます。 Visual Basicはやったことがないので、、、helpを見ればできるのでしょうか?。。。

  • エクセル 複数行にまたがっているデーターを一つの行にまとめたい

          A列  B列   C列 1行目  佐藤 北海道 りんご 2行目  佐藤 北海道 ばなな   3行目 伊藤  東京  いちご 4行目  伊藤  東京  ばなな  上記のようなデーターがあります。これを2行目と4行目を削除し下記のようにしたいのですが       A列  B列      C列 1行目  佐藤 北海道  りんごばなな 2行目  伊藤  東京   いちごばなな A列とB列のデーターが同じでC列のデータが異なる場合、上記のように一行にまとめたいのです。関数やVBAで上記の処理を出来る方法がありますでしょうか。 

  • EXCELの入力を簡単にする方法を教えて下さい。

    初心者なので言葉足らずになってしまうかもしれませんが教えて下さい。 EXCELのA列には番号(英数字)、B列には名称が入ったデータがあります。 別のEXCELファイルを立ち上げ、セルA1に上記A列の番号(英数字)を手入力した場合、セルB1に上記B列の名称が自動的に表示して欲しいのですが、何か良い方法はありますでしょうか?

  • エクセル 重複行の編集 色をつける

    お世話になります。 エクセル2000にて以下のような表を作りました。    A |B |C 1 名称|1/11|123 2 ああ|1/11|456 ←行全体に色を付けたい 3 ああ|1/12|789 4 いい|1/11|999 ←行全体に色を付けたい 5 いい|1/11|888 ※行はA・B列をキーに、昇順(順序良く)並んでいます。 表の中に重複行(A・B列をキーとして)が存在していて、その一つ目の行に、色を付けたいのですが、 どうすれば実現できるでしょうか? 例でいうと、2・4行目に色を付けたいのですが、術が思いつきません。 どうぞご教授下さいm(__)m