2016-12-07 16 views
0

このコードでは、列A(コードソース)と列B(コードroc)を比較し、列AのコードソースごとにコードCを列挙し、列Dでは、A = Bの場合は、列Gのコードregateと列Hのアドレスを使用して、EおよびFに戻します。 これを使用しているコードは、シャットダウンするまでブロックされ、誰かがあなたに感謝することができれば正確な結果は得られません。 ここに私がAとB、CとDから必要とする結果の写真ですVBAを使用して2つの列の値を比較する

enter image description here

Sub copy_lignes() 

    Dim DerLigA, DerLigB As Long, i, j As Long 

    DerLigA = Sheets("sheet3").Range("A" & Rows.Count).End(xlUp).Row 
    DerLigB = Sheets("sheet3").Range("B" & Rows.Count).End(xlUp).Row 
    For i = 2 To DerLigA 
     For j = 2 To DerLigB 
     If Sheets("sheet3").Range("A" & i) = Sheets("sheet3").Range("B" & j) Then 

      Sheets("sheet3").Range("A" & i).Copy Destination:=Sheets("sheet3").Range("E" & i) 
      Sheets("sheet3").Range("B" & i).Copy Destination:=Sheets("sheet3").Range("F" & i) 
      Sheets("sheet3").Range("C" & i).Copy Destination:=Sheets("sheet3").Range("G" & i) 
      Sheets("sheet3").Range("D" & i).Copy Destination:=Sheets("sheet3").Range("H" & i) 

     End If 
     Next j 
    Next i 

End Sub 
+0

は、A列とB列の値が一意ですか?というのは。列Aの各値は繰り返しませんか?列B? –

+0

列Aの値は一意ですが、列Bでは繰り返されます。 –

+0

行10の列Aの値が行20の列Bの値と一致する場合は、行20のセル「A:D」のセル「E:H」に値をコピーしますか?または列10? –

答えて

0

多分これは何で、以下のコードを試してみてくださいあなたの投稿の意味:

Sub copy_lignes() 

Dim DerLigA, DerLigB As Long, i, j As Long 
Dim PasteRow As Long 

' optimize speed performance 
Application.ScreenUpdating = False 

With Sheets("Sheet3") 

    DerLigA = .Cells(.Rows.Count, "A").End(xlUp).Row 
    DerLigB = .Cells(.Rows.Count, "B").End(xlUp).Row 
    PasteRow = 2 

    For i = 2 To DerLigA 
     For j = 2 To DerLigB 
      If .Range("A" & i) = .Range("B" & j) Then 
       .Range("A" & i).Copy Destination:=.Range("E" & PasteRow) 
       .Range("B" & j & ":D" & j).Copy Destination:=.Range("F" & PasteRow) 
       PasteRow = PasteRow + 1 
      End If 
     Next j 
    Next i 
End With 

' restore settings 
Application.ScreenUpdating = True 

End Sub 
+0

シャットダウンまではまだブロックされていますが、それは私が望むものに近い結果をもたらし、EとFは同じではありません! –

+0

私は自分のposteのリンクに画像を追加しました。結果は –

+0

です@AnasRAFEI今すぐ(編集したコードを)試してみてください。あなたが望む結果と一致するはずです –

-1

それはあなたがわずか数行でタブに必要なことかもしれないが、それは次のようになります。

Sub copy_lignes() 

Dim DerLigA As Long 
Dim DerLigB As Long 
Dim i As Integer 
Dim j As Integer 
i = 2 
j = 2 
DerLigA = Sheets("sheet3").Range("A" & Rows.Count).End(xlUp).Row 
DerLigB = Sheets("sheet3").Range("B" & Rows.Count).End(xlUp).Row 
For i To DerLigA 
    For j To DerLigB 
     If Sheets("sheet3").Range("A" & i) = Sheets("sheet3").Range("B" & j) Then 

      Sheets("sheet3").Range("A" & i).Copy Destination:=Sheets("sheet3").Range("E" & i) 
      Sheets("sheet3").Range("B" & i).Copy Destination:=Sheets("sheet3").Range("F" & i) 
      Sheets("sheet3").Range("C" & i).Copy Destination:=Sheets("sheet3").Range("G" & i) 
      Sheets("sheet3").Range("D" & i).Copy Destination:=Sheets("sheet3").Range("H" & i) 

     End If 
    Next j 
Next i 
End Sub 
+0

何も変わっていません! –

関連する問題