2017-01-25 20 views
0

次のVBAコードを使用して、同じブック内の2つのシートのデータをリンクします。両方のシートの各エントリには一意の識別子があります。私はその識別子を使用し、sheet1の最後の列の右側にそれを通過して、sheet2から行全体をコピーしたいと考えています。コピー一意の識別子を使用してデータを貼り付けます

このコードを修正するにはどうすればよいですか?

Sub link_data() 
    Dim i, lastrow 
    im i2, lastrow2 

    Dim A As Double 
    Dim D As Double 
    lastrow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row 
    lastrow2 = Sheet2.Range("A" & Rows.Count).End(xlUp).Row 
    For i = 2 To lastrow 
    For i2 = 2 To lastrow2 
    Set D = Sheet1.Cells(i, "AW") 
    Set A = Sheet2.Cells(i2, "AI") 
    If Sheet1.Cells(D).Value = Sheet2.Cells(A) Then 
    Sheet2.Cells(A).EntireRow.Copy Destination:=Sheet1.Cells(i, "AX").end(xlRight).Offset(1) 
End Sub 
+0

閉じます'Loops)を呼び出し、' If'を 'End If'で閉じます。 –

+0

フォーマットが改善され、無駄なテキストが削除されました。 –

答えて

0

何が起こるかを知ってみましょう:

Next`は(あなたが2 `を持って`を使用して `For`の各
Sub link_data() 
    Dim i As Long, lastrow As Long, i2 As Long, lastrow2 As Long 
    Dim A As Range, D As Range 

    lastrow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row 
    lastrow2 = Sheet2.Range("A" & Rows.Count).End(xlUp).Row 
    For i = 2 To lastrow 
     Set D = Sheet1.Cells(i, "AW") 
     For i2 = 2 To lastrow2 
      Set A = Sheet2.Cells(i2, "AI") 
      If D.Value = A.Value Then 
       Intersect(A.Parent.UsedRange, A.EntireRow).Copy Destination:=Sheet1.Cells(i, Columns.Count).End(xlToLeft).Offset(, 1) 
      End If 
     Next 
    Next 
End Sub 
0

実際には厳しいものを再現するためのダミーデータはありません。しかし、あなたのデータを以下を試してみて、私は多分あなたは、この後にしている

Option Explicit 
Sub link_data() 
Dim i, lastrow 
Dim i2, lastrow2 
Dim A 
Dim D 

lastrow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row 
lastrow2 = Sheet2.Range("A" & Rows.Count).End(xlUp).Row 

For i = 2 To lastrow 
    For i2 = 2 To lastrow2 
    Set D = Sheets("Sheet1").Cells(i, "AW") 
    Set A = Sheets("Sheet2").Cells(i2, "AI") 
     If Sheet1.Cells(D).Value = Sheet2.Cells(A) Then 
      Sheet2.Cells(i2, "AI").EntireRow.Copy Destination:=Sheet1.Cells(i, "AX") 
     End If 
    Next i2 
Next i 

End Sub 
関連する問題