Tabellenvergleich mit Makro

mr_xxl

Grünschnabel
Hallo alle zusammen,

ich versuche ein Makro für den Vergleich von zwei Tabellen zu erstellen. Es soll die Spalte A in Tabellenblatt1 mit der Spalte A in Tabellenblatt2 und gleichzeitig die Spalte D in Tabellenblatt1 mit der Spalte D in Tabellenblatt2. Wenn in der Spalte B (Tabellenblatt1) die Werte aus B (2) vorkommen und die Werte D (1) und D (2) ungleich sind, sollen die Werte in D (2) ersetzt werden. Und wenn die Werte aus B (1)nicht in B (2) vorkommen und die Werte in D (1) gleich Null sind, sollen die Spalten B (2) und D (2) mit den Werten ergänzt werden.

Tabellenblatt1:
A B C D
Nummer Bezeichnung PLZ
1 Bezeichnung1 10823
2 Bezeichnung2 80999
3 Bezeichnung3 80999
4 Bezeichnung4 32278
5 Bezeichnung5 71139
6 Bezeichnung6 80999
7 Bezeichnung7 80999
8 Bezeichnung8 6918
9 Bezeichnung9 80999
10 Bezeichnung10 21409
11 Bezeichnung11 80999
12 Bezeichnung12 42651
13 Bezeichnung13 42719

Tabellenblatt2:
A B C D
Nummer Bezeichnung PLZ
2 Bezeichnung2 80999
3 Bezeichnung3 80999
6 Bezeichnung6 80999
7 Bezeichnung7 80999
9 Bezeichnung9 80999
(hier ist Nummer 11 noch aufgelistet)
 
Zuletzt bearbeitet:
Das ist jetzt nicht getestet aber versuche es mal so:

Visual Basic:
For I = 1 To Letzte1
If Tabelle1.Cells(I, 2) = Tabelle2.Cells(I, 2) And Tabelle1.Cells(I, 4) <> Tabelle1.Cells(I, 4) Then
		Tabelle2.Cells(I, 4) = Tabelle1.Cells(I, 4)
End If

If Tabelle1.Cells(I, 2) <> Tabelle2.Cells(I, 2) And Tabelle1.Cells(I, 4) = "" Then
	Tabelle2.Cells(I, 2) = Tabelle1.Cells(I, 2)
	Tabelle2.Cells(I, 4) = Tabelle1.Cells(I, 4)
End If
Next I
 
Danke für den Antwort, mit And`s sieht es viel besser aus. Was ich nicht verstehe wieso wird es nur die lezte Zeile mit zutrefenden Kriterien mehrmals ausgegeben. die if-Bedingung ist doch in der Schleife oder habe ich was übersehen?!
 
Ohne deinen Code wirklich zu testen nicht so leicht zu sagen. Aber ich vermute es liegt daran das du zwei FOR-NEXT Schleifen hast und es sich da vielleicht überlagert!?

Klappt es ansonsten so wie es sein soll oder ist noch was falsch?
 
Danke für deine Mühe! Es geht schon in die richtige Richtung. Das Problem was ich jetzt habe ist, dass die Zeilen einfach überschrieben werden. Wie kann ich die komplette Zeile kopieren und einfügen, anstatt des Direktverweises (Tabelle2.Cells(I, 2) = Tabelle1.Cells(I, 2) ? So dass die Zeile unten oder durch Nummerirung an der richtige Stelle auftaucht.
 
Zuletzt bearbeitet:
So dass die Zeile unten oder durch Nummerirung an der richtige Stelle auftaucht.

Ich verstehe die Frage (und vor allem diesen Satz) nicht wirklich.

Soll jetzt die "falsche" Zeile in Tabelle 2 beibehalten werden und dann darunter eine neue Zeile mit der korrigierten Werten eingefügt werden?
 
ich versuche es zu erklären. jetzt werden beide Tabellen mit einander verglichen und die Werte aus der ersten Tabelle in die zweiten an genau gleiche Stelle wie in der erste. D.h. wenn die zu kopierende Werte in der erste Tabelle in der 5. Zeile sind werden sie auch in die 5. Zeile der Zweite Tabelle überschrieben. Ich will stattdessen, dass die Werte eingefügt werden. Entweder unten oder, da ich die Zuordnung nach der Nummerierung der Spalte B habe, gleich an der richtige Stelle. Z.B. in der Zelle B6 steht 98 und in der Zelle B7 100, wenn der zu kopierende Wert aus Tabelle1 99 ist, dann soll er in der leere Zeile (unten) oder in Zeile 7 eingefügt und der Inhalt der alte Zeile 7 nach unten verschoben.
 

Neue Beiträge

Zurück