電子書籍の厳選無料作品が豊富!

いつも活用させていただいているものです。

今回は、以下の内容を行いたいと思います

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  |女 |
              ←追加をしたい

お願いします。

A 回答 (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男
    • good
    • 0
この回答へのお礼

ソースをいただきましてありがとうございました。

早速、(3)で事項したところ、問題なく起動しました。

ありがとうございました。

お礼日時:2007/11/21 11:07

それぞれのシートのA列のNOに重複がないのであれば、


その有無を判定し、ない場合には値を代入していく。
と言ったところでしょうか?
(NOと名前・年齢・性別は必ず一致している事が条件です)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!