0

既存のエントリを互いに比較した後、あるワークシートから別のワークシートにデータの行を追加するにはどうすればよいですか? やってみましたが、唯一の問題は、重複したエントリが追加されていることです。

For Each Cell1 In Worksheets(1).Range("A1", Worksheets(1).Range("A1").End(xlDown))
        
        For Each Cell3 In Worksheets(3).Range("A1", Worksheets(3).Range("A1").End(xlDown))
    
            If Not Cell1 = Cell3 Then
                Dim LastRow3 As Long
                LastRow3 = Worksheets(3).Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
                Worksheets(3).Range("A1:C1").Rows(LastRow3).Value = Worksheets(1).Range("A1:C1").Rows(Cell1.Row).Value
                
            Else
                Exit For
            End If
    
        Next Cell3

Next Cell1

4

1 に答える 1

0

Find() を使用すると、ネストされたループを使用するよりも管理が簡単になります。

Sub Test()

    Dim c As Range, f As Range
    Dim ws1, ws3

    Set ws1 = Worksheets(1)
    Set ws3 = Worksheets(3)

    For Each c In ws1.Range(ws1.Range("A1"), ws1.Cells(Rows.Count, 1).End(xlUp)).Cells

        Set f = ws3.Range(ws3.Range("A1"), _
                           ws3.Cells(Rows.Count, 1).End(xlUp)).Find( _
                                      What:=c.Value, lookat:=xlWhole)

        If f Is Nothing Then
            ws3.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 3).Value = _
                                                        c.Resize(1, 3).Value
        End If

    Next c

End Sub
于 2015-02-12T06:31:13.380 に答える