2017-12-04 16 views
1

workbook1の列Dとworkbook2の列Aを比較するVBAスクリプトを探しています。 それは私がworkbook2列Gからのデータをご希望のマッチがある場合は、列E.Excel VBA 2つのワークブックの値を比較してデータをコピーします。

I'veこのスクリプトを見つけwoksbook1にコピーする:

Sub UpdateW2() 

Dim w1 As Worksheet, w2 As Worksheet 
Dim c As Range, FR As Long 

Application.ScreenUpdating = False 

Set w1 = Workbooks("Excel VBA Test.xlsm").Worksheets("Blad1") 
Set w2 = Workbooks("Excel VBA Test Backbone.xlsx").Worksheets("Blad1") 

For Each c In w1.Range("D2", w1.Range("D" & Rows.Count).End(xlUp)) 
    FR = 0 
    On Error Resume Next 
    FR = Application.Match(c, w2.Columns("A"), 0) 
    On Error GoTo 0 
    If FR <> 0 Then w1.Range("C" & FR).Value = c.Offset(, -3) 
Next c 
Application.ScreenUpdating = True 
End Sub 

それは簡単であり、私が望むほとんど何を行いますが、間違ったワークシートに挿入します。 データをコピーするワークシートも切り替えることはできません。 どのようなヘルプが最も役立ちます。

+0

私はw1のコードを知っており、そのブックで実行するボタンがあります。 –

答えて

1

これは必要なものですか?あなたが間違った方法でラウンドをコピーしていたと思って、あなたのオフセットはかなり正しくはありませんでした。

Sub UpdateW2() 

Dim w1 As Worksheet, w2 As Worksheet 
Dim c As Range, FR As Variant 

Application.ScreenUpdating = False 

Set w1 = Workbooks("Excel VBA Test.xlsm").Worksheets("Blad1") 
Set w2 = Workbooks("Excel VBA Test Backbone.xlsx").Worksheets("Blad1") 

For Each c In w1.Range("D2", w1.Range("D" & Rows.Count).End(xlUp)) 
    FR = Application.Match(c, w2.Columns("A"), 0) 
    If IsNumeric(FR) Then c.Offset(, 1).Value = w2.Range("G" & FR).Value 
Next c 

Application.ScreenUpdating = True 

End Sub 
+0

8秒で私を打つ:) –

+0

@ShaiRado - 私はおそらくそれの前にそれを見た、それに2つの亀裂があった。 – SJR

+1

感謝のように働いた、ありがとう! –

関連する問題