• ベストアンサー

EXCEL(マクロ)2つのデータ比較について

いつも活用させていただいているものです。 今回は、以下の内容を行いたいと思います Sheet1とSheet2のA列(NO)を比較して、Sheet2にない項目(NO、名前、年齢、性別)をSheet2の4行目に追加したいと考えております。 どのようなプログラムを組めばよろしいでしょうか。 【Sheet1】 |A  |B | C | D | --------------------------- 1|NO  |名前 |年齢 |性別| 2|001 |鈴木 |11  |男 | 3|002 |佐藤 |15  |女 | 4|003 |長島 |29  |女 | 【Sheet2】  |A  |B | C | D | --------------------------- 1|NO  |名前 |年齢 |性別| 2|001 |鈴木 |11  |男 | 3|002 |佐藤 |15  |女 |               ←追加をしたい お願いします。

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

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

色々なロジックがあると思うが、 (1)総なめ比較法 (2)マッチングアルゴリズム法 (3)VLOOKUP利用 など考えられ、私なら(2)でやるが、プログラム経験が余りなさそうだから(3)でやってみます。 Sub test01() On Error GoTo p1 Dim sh1, sh2 As Worksheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") '--- d1 = sh1.Range("A65536").End(xlUp).Row d2 = sh2.Range("A65536").End(xlUp).Row For i = 2 To d1 x = Application.WorksheetFunction.VLookup(sh1.Cells(i, "B"), sh2.Range("B2:D" & d2), 1, False) Next Exit Sub p1: d2 = d2 + 1 sh2.Cells(d2, "A") = sh1.Cells(i, "A") sh2.Cells(d2, "B") = sh1.Cells(i, "B") sh2.Cells(d2, "C") = sh1.Cells(i, "C") sh2.Cells(d2, "D") = sh1.Cells(i, "D") Resume Next End Sub ー 例データ Sheet1 001 鈴木 11 男 002 佐藤 15 女 003 長島 29 女 004 大田 33 男 002 佐藤 15 女 Sheet2 A2:D4 001 鈴木 11 男 002 佐藤 15 女 009 近藤 23 女 結果 Sheet2 001 鈴木 11 男 002 佐藤 15 女 009 近藤 23 女 003 長島 29 女 004 大田 33 男

ubiqitous
質問者

お礼

ソースをいただきましてありがとうございました。 早速、(3)で事項したところ、問題なく起動しました。 ありがとうございました。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

それぞれのシートのA列のNOに重複がないのであれば、 その有無を判定し、ない場合には値を代入していく。 と言ったところでしょうか? (NOと名前・年齢・性別は必ず一致している事が条件です)

関連するQ&A