2016-04-21 13 views
-1

Um einen Hintergrund zu liefern, habe ich mich in Stack umgesehen und versucht, eine Lösung für mein Problem zu finden, bin aber zu kurz gekommen.Erstellen von Makros zum automatischen Auffüllen von Daten von einer Arbeitsmappe in eine andere

Using VBA to compare two excel workbooks

excel vba macro to match cells from two different workbooks and copy and paste accordingly

Was ich versuche, ist zu identifizieren zu tun, wenn die gleichen Zahlen in zwei Arbeitsmappen präsentiert werden, „Arbeitsmappe A“ und „B-Arbeitsmappe“. Wenn dieselben Daten in beiden Arbeitsmappen vorhanden sind, möchte ich Daten aus einer anderen Spalte in Arbeitsmappe B automatisch in einer bestimmten Spalte in Arbeitsmappe A.

Der Vorbehalt zu Arbeitsmappe B ist, dass das Dokument leben wird auf einer SharePoint-Website.

Die Spalte der Daten in Arbeitsmappe A lebt, ist B. Die gleichen Daten die Spalte in der Arbeitsmappe B lebt, ist C.

Wenn die Zahlen das gleiche in beiden Arbeitsmappen sind, ich die Daten aus der Spalte M kopieren möchten in Arbeitsmappe B und setzen Sie es in Spalte J in Arbeitsmappe A.

Jede Hilfe würde sehr geschätzt werden.

Dies ist der einzige Code ich in der Lage gewesen zu finden:

Ich bin nicht sehr geschickt im Umgang mit VBA und habe keinen Code, der noch funktioniert. Der nächste Code konnte ich unter finden:

Sub UpdateW2() 

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

Application.ScreenUpdating = False 

Set w1 = Workbooks("4130 Sedgwick Activity Report 03212016_GT.xlsb").Worksheets("4130 Lincoln") 
Set w2 = Workbooks("Test_Eaton Absence Detail Report 04-15-2016 (2)_GT.xlsx").Worksheets("Active Locations") 


For Each c In w1.Range("B3", w1.Range("J" & 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 w2.Range("M" & FR).Value = c.Offset(, -3) 
Next c 
Application.ScreenUpdating = True 
End Sub 
+0

Siehe [wie man fragt] (http://stackoverflow.com/help/how-to-ask). – findwindow

+0

Ich habe meine Frage entsprechend aktualisiert. – Glenn

+0

Bitte senden Sie Ihren Code und warum es nicht funktioniert. – findwindow

Antwort

0

Im Code, den Sie geschrieben, gibt es eine Kombination aus zwei Linien, die ein Problem verursachen.

Diese Linie ...

For Each c In w1.Range("B3", w1.Range("J" & Rows.Count).End(xlUp)) 

... sagt durch alle Zellen im Bereich "B3" bis "J" etwas Schleife. "B" ist die zweite Spalte im Arbeitsblatt.

Diese Linie ...

If FR <> 0 Then w2.Range("M" & FR).Value = c.Offset(, -3) 

... sagt den Wert drei Spalten nach hinten aus der Zelle nehmen die Schleife auf sucht und es in der Spalte „M“ des Arbeitsblatts in der anderen Arbeitsmappe . Wenn Sie drei Spalten rückwärts von Spalte "B" gehen, erhalten Sie einen Fehler.

In Ihren Kommentaren sagen Sie nur "Ich möchte Daten aus einer anderen Spalte in Arbeitsmappe B nehmen", aber Sie sagen nicht, welche Spalte.

Wenn die „eine andere Spalte“ ist wirklich drei Spalten zurück, dann werden Sie zumindest Notwendigkeit, diese Zeile zu ändern ...

For Each c In w1.Range("B3", w1.Range("J" & Rows.Count).End(xlUp)) 

... auf diese Linie ...

For Each c In w1.Range("D3", w1.Range("J" & Rows.Count).End(xlUp)) 

Wenn die „eine andere Spalte“ wird immer festgelegt (zB Spalte A), dann könnte man diese Zeile ...

ändern
If FR <> 0 Then w2.Range("M" & FR).Value = c.Offset(, -3) 

... Ate ist Linie ...

If FR <> 0 Then w2.Range("M" & FR).Value = w1.Range("A" & c.Row) 

Eine dieser Änderungen sollte Code erhalten, der "funktioniert".

Verwandte Themen