Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1432to1436
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Vergleich zwei Blätter

Vergleich zwei Blätter
25.06.2015 09:41:02
Larissa
Hallo,
folgende Ausgangslage liegt vor:
Ich habe zwei Blätter mit ähnlichen Einträgen. Nun möchte ich überprüfen, ob sich entweder Spalte A oder Spalte E geändert hat. Die erste Mappe ist die neue Mappe mit den veränderten Werten:
Sub Vergleich()
Set nwkb = ThisWorkbook.Worksheets(1)
Set awkb = ThisWorkbook.Worksheets(2)
For x = 1200 To 2 Step -1
For y = 1200 To 2 Step -1
If nwkb.Range("A" & x) = awkb.Range("A" & y) And nwkb.Range("C" & x) = awkb.Range("C" & y)  _
And nwkb.Range("E" & x) = awkb.Range("E" & y) Then
nwkb.Range("H" & x).Value = "No changes"
ElseIf nwkb.Range("E" & x).Value   _
awkb.Range("E" & y).Value And IsNumeric(awkb.Range("E" & y).Value) And IsNumeric(nwkb.Range("E" & x).Value) And awkb.Range("E" & y).Value > 0 Then
nwkb.Range("H" & x).Value = "neuer Preis"
End If
Next
Next
End Sub
Jetzt möchte ich aber noch eine Unterscheidung, ob sich der Preis (Spalte E) geändert hat oder die Nummer (Spalte A). Das kriege ich aber im Moment nicht hin, habt ihr eine Idee?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleich zwei Blätter
25.06.2015 11:46:19
Senna
Hallo Larissa,
als erstes fällt mir auf, dass du keine zwei Schleifen benötigst - x und y sind immer gleich, du brauchst also nur eins von beiden :).
Dann stellt sich mir die Frage, ob in Spalte E überhaupt was anderes als eine Zahl stehen sollte. Oder was passieren soll, wenn hier keine Zahl steht.
Ich versuche dir aber mal zu helfen:

Sub Vergleich()
Dim nwkb as Worksheet
Dim awkb as Worksheet
Dim x%
Set nwkb = ThisWorkbook.Worksheets(1)
Set awkb = ThisWorkbook.Worksheets(2)
For x = 1200 To 2 Step -1
If nwkb.Range("A" & x) = awkb.Range("A" & x) And nwkb.Range("C" & x) = awkb.Range("C" & x)  _
And nwkb.Range("E" & x) = awkb.Range("E" & x) Then
nwkb.Range("H" & x).Value = "No changes"
Else
If nwkb.Range("E" & x).Value  awkb.Range("E" & x).Value Then
nwkb.Range("H" & x).Value = "neuer Preis"
End If
If nwkb.Range("A" & x).Value  awkb.Range("A" & x).Value Then
nwkb.Range("H" & x).Value = "neue Nummer"
End If
If nwkb.Range("E" & x).Value  awkb.Range("E" & x).Value AND nwkb.Range("A" & x).Value  _
awkb.Range("A" & x).Value Then
nwkb.Range("H" & x).Value = "neuer Preis und neue Nummer"
End If
End If
Next
Next
End Sub

Anzeige
AW: Vergleich zwei Blätter
25.06.2015 11:49:18
Senna
Einmal Next muss natürlich auch noch raus.

AW: Vergleich zwei Blätter
25.06.2015 11:52:26
Larissa
Das Problem bei der Sache ist, dass die Einträge nicht gleich nummeriert sind. Daher die zwei Schleifen - meine Theorie..

AW: Vergleich zwei Blätter
25.06.2015 20:01:33
Michael
Hi Larissa,
ich habe das Gefühl, die ganze Geschichte ist in sich nicht stimmig: um die Frage effektiv beantworten zu können, bräuchte man nähere Informationen, was in welcher Spalte enthalten ist bzw. (besser) eine Beispieldatei mit "neutralen" Daten.
Der zweite Teil Deiner IF-Abfragen enthält nämlich keinen weiteren Zugriff zu Spalte C.
Das bedeutet, daß der Code (außer alle drei Spalten sind identisch) mehr oder weniger zufällige Werte miteinander vergleicht. Das führt dazu, daß letztlich durch das komplette Durchlaufen der inneren Schleife der Wert des Vergleichs immer nur aus dem letzten Datensatz (also der 1. Zeile) übernommen wird; alle vorhergehenden werden immer wieder überschrieben.
Larissas Code habe ich nicht weiter angesehen, weil er ja wegen Deines Kommentars "nicht gleich nummeriert" eh nicht tut.
Was mir bei der ganzen Geschichte fehlt, ist, theoretisch ausgedrückt, der "eindeutige" Schlüssel, also die Information, auf welche Weise (welche Spalte) beide Tabellen verknüpft sind.
Welche Daten sind denn "nicht gleich nummeriert"?
Und welche Daten sind in beiden Tabellen "identisch"? Eine Artikelbezeichnung oder irgendwas?
Wie gesagt, lad am besten ne Beispieldatei hoch.
Schöne Grüße,
Michael
P.S.: das kannste nicht bezahlen! Ich hab jetzt den Nachmittag mit dem Ding verblödelt, weil es mich mal wieder gejuckt hat...
Ausgehend von der Annahme, daß in der Spalte C der jeweils übereinstimmende Wert, etwa ne Artikelnr. steht, sieht das Ganze so aus: https://www.herber.de/bbs/user/98482.xls
Da rufst Du bitte auf: Vergleich_Opti
Die zwei Werte für nz bzw. az (die unterste Zeile mit Werten) paßt Du bitte an oder läßt sie von Excel ermitteln, sinngemäß:
az = range("a"&rows.count).end(xlup).row+1
P.P.S.: Die Sache läuft "halb in Excel, halb in VBA": im Hilfsblatt sind ein paar Formeln hinterlegt, die Du bitte nicht anfaßt!
*Wenn* die Logik so ist, wie Du es Dir vorstellst, könnte man das auch direkt kodieren.
PePePeeS: Das Ding ist zwar optimierbar, auch so ziemlich fix, um nicht zu sagen rasend schnell... Muß ja mal gesagt werden.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige