シート1 Range("A1")=1, Range("A2")=2,Range("A3")=3,Range("A4")=4,
シート2 Range("A1")=3, Range("A2")=4
シート1を検索してシート2に含まれない1、2の値ををシート2にとってきたい
よろしくお願いします。
こんな感じ!!
Sub Macro1() Dim r1 As Range, r2 As Range, c As Variant, m As Object Set r1 = Worksheets("Sheet1").Range("A1:A" & Range("A65536").End(xlUp).Row): 'シート1のデータ範囲 Set r2 = Worksheets("Sheet2").Range("A65536").End(xlUp): 'シート2のデータ範囲 r2.Select: ' シート2選択! ActiveCell.Offset(1, 0).Select: ' あらかじめ書き込み位置へ移動! For Each c In r1: 'シート1から1つずつ取って来る! Set m = r2.Find(c): 'シート2上で探す!! If m Is Nothing Then: 'シート2に無ければ! ActiveCell.Value = c: '書き込んで! ActiveCell.Offset(1, 0).Select: ' 次書き込み位置へ移動! End If Next End Sub
下記のコードが素朴な書き方です。
一行目から、空白のセルにあたるまで繰り返し処理します。
処理速度を考えていない書き方なので、行数が数千行を超えると遅く感じるかもしれません。
Sub main() Dim Rng1 As Range Dim Rng2 As Range Set Rng1 = Sheets(1).Cells(1, 1) Set Rng2 = Sheets(2).Cells(1, 1) size1 = Rng1.CurrentRegion.Rows.Count size2 = Rng2.CurrentRegion.Rows.Count lastRow = size2 For i = 1 To size1 found = False For j = 1 To size2 If Rng1(i, 1) = Rng2(j, 1) Then found = True Exit For End If Next If Not found Then lastRow = lastRow + 1 Rng2(lastRow, 1) = Rng1(i, 1) End If Next End Sub
size1 =
のところで
コンパイルエラー
変数が定義されていません
のメッセージがでます
アドバイスお願いします
こんな感じ!!
Sub Macro1() Dim r1 As Range, r2 As Range, c As Variant, m As Object Set r1 = Worksheets("Sheet1").Range("A1:A" & Range("A65536").End(xlUp).Row): 'シート1のデータ範囲 Set r2 = Worksheets("Sheet2").Range("A65536").End(xlUp): 'シート2のデータ範囲 r2.Select: ' シート2選択! ActiveCell.Offset(1, 0).Select: ' あらかじめ書き込み位置へ移動! For Each c In r1: 'シート1から1つずつ取って来る! Set m = r2.Find(c): 'シート2上で探す!! If m Is Nothing Then: 'シート2に無ければ! ActiveCell.Value = c: '書き込んで! ActiveCell.Offset(1, 0).Select: ' 次書き込み位置へ移動! End If Next End Sub
早速ありがとうございます。実行時に
コンパイルエラー
End ifに対するIfブロックがありません
のエラーメッセージが出ます。
アドバイスおねがいします
Sub settest() For a = 1 To 65536 Debug.Print Worksheets("Sheet1").Cells(a, "A") If Worksheets("Sheet1").Cells(a, "A") = "" Then Exit For If Worksheets("Sheet2").Range("A1:A65536").Find(Worksheets("Sheet1").Cells(a, "A"), LookAt:=xlWhole) Is Nothing Then Worksheets("Sheet2").Range("A1").End(xlDown).Offset(1, 0) = Worksheets("Sheet1").Cells(a, "A") End If Next a End Sub
A列のみやってます。
早速ありがとうございます。実行時に
コンパイルエラー
End ifに対するIfブロックがありません
のエラーメッセージが出ます。
アドバイスおねがいします