2016-08-31 7 views
0

Ich habe 2 Blätter namens orange Buchdaten Warnungen und insgesamt orange Buchdaten Warnungen, beide Blätter haben Daten von A bis M, eindeutigen Wert ist in Spalte A in beiden Blättern. hier vergleiche ich orange Buchdatenwarnungen mit totalen orange Buchdatenwarnungen. Wenn es eine Übereinstimmung gibt, vergleichen Sie die Zeilenzellenwerte für jede Spalte und wenn es einen Unterschied gibt, sollte der Code als Aktualisieren in Blatt orange Buchdatenwarnungen Spalte N geschrieben werden und wenn der eindeutige Wert nicht verfügbar ist, sollte er Neue Eingabe schreiben Spalte N .. Unten ist Code, den ich ausprobiert habe. es funktioniert für, wenn es irgendeine Aktualisierung in den Daten für eine Spalte gibt, ich brauche Hilfe, damit ich alle Spalten vergleichen und als neue Hinzufügung schreiben kann, wenn eindeutiger Wert nicht anwesend ist.Excel VBA Vergleichen zwei Blätter basierend auf eindeutigen Wert

Sub compare10() 
Dim w1 As Worksheet, w2 As Worksheet 
Dim c As Range, a As Range 


Set w1 = Sheets("total orange book data") 
Set w2 = Sheets("orange book data alerts") 
With w1 
    For Each c In .Range("a2", .Range("a" & Rows.Count).End(xlUp)) 
     Set a = w2.Columns(1).Find(c.Value, lookat:=xlWhole) 
     If Not a is nothing then 
      if.cells(c.row,10).value<>w2.cells(a.row(a.row,10) then 

      w2.Cells(a.Row, 14).Value = "update" 
     End If 
    Next c 
End With 


End Sub 
+0

Sie müssen das hinzufügen Arbeitsblatt erwarten Sie, dass 'Rows.Count' läuft. Ich nehme an, es wird '.Range (" a "& .Rows.Count) .End (xlUp)'. Was ist 'If.Cells (c.Row, 10) ....'? Ich vermute einen Tippfehler beim Einfügen in SO? – BruceWayne

+0

Sie wollen sagen Für jedes c In .Range ("a2", .Range ("a" & Rows.Count) .Ende (xlUp)) sollte .Für jedes c Im Bereich ("a" & .Rows.Count) .End (xlUp) http://stackoverflow.com/users/6701192/partyhatpanda http://stackoverflow.com/users/4650297/brucewayne –

Antwort

0

Leider einen völlig neuen Code zu Ihnen vorschlagen, aber die folgenden Code wird die Arbeit machen [dies ist die Art, wie ich es tun, geprüft und Arbeiten]

Sub compare10() 

Dim found As Integer 

Worksheets("orange book data alerts").Activate 
With ActiveSheet 
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
End With 

Worksheets("total orange book data alerts").Activate 
With ActiveSheet 
lastRow2 = .Cells(.Rows.Count, "A").End(xlUp).Row 
End With 

Worksheets("orange book data alerts").Activate 

For i = 1 To lastRow 
    found = 0 
    For j = 1 To lastRow2 
     If Sheets("orange book data alerts").Cells(i, 1).Value = Sheets("total orange book data alerts").Cells(j, 1).Value Then 
      found = 1 
      For k = 1 To 13 
       If Sheets("orange book data alerts").Cells(i, k).Value <> Sheets("total orange book data alerts").Cells(j, k).Value Then 
        Sheets("orange book data alerts").Cells(i, 14).Value = "Update" 
       End If 
      Next k 
     End If 
    Next j 
    If found = 0 Then 
     Sheets("orange book data alerts").Cells(i, 14).Value = "New Addition" 
    End If 
Next i 

End Sub 
+0

danke arun du Code sieht ziemlich gut aus, aber meine Anzahl von Zeilen wird geändert beide bleche wenn ich täglich laufe wie man es dynamisch macht? http://stackoverflow.com/users/6400030/arun-thomas –

+0

sehe meine aktualisierte Antwort, diese wird die Anzahl der Zeilen von Daten in jedem Blatt finden und entsprechend analysieren –

+0

Vielen Dank Thomas. Ich habe eine Frage, gibt es einen Weg in VBA, um Daten zu ziehen, wenn letzten 15 Tage vom aktuellen Tag. Präsentieren Sie iam mithilfe der Suchfunktion, um nicht übereinstimmende Daten abzugleichen und zu löschen. Nochmals vielen Dank für sofortige Hilfe. http://stackoverflow.com/users/6400030/arun-thomas –

Verwandte Themen