Zeilenvergleichen und in andere Sheet kopieren - MAKRO

terrly

Grünschnabel
Hallo zusammen,

ich brauche dringend Hilfe und zwar habe folgendes Problem. Ich muss mit Makro Zeile IDs miteinander vergleichen und mit der IDs, die gleich sind höchste versionsnummer merken und mit entsprechende Zeilen in andere Tabelle kopieren.

Beispiel:

ID Version Verfasser ..... ......

100 | 2 | max --- - -----
101 | 1 | moritz
101 | 2 | bla bla
102 | 1 | dslöa
102 | 1.1 | fdsjha#
103 | 1 | ksdfl
103 | 2 | adlföfgkaö
103 | 3 | owekawe
103 | 4 | sköa

Ergebnis soll in andere Tabelle so aussehen:

100 | 2 | max --- - -----
101 | 2 | bla bla --------- ------
102 | 1.1 | fdsjha#
103 | 4 | sköa


Tausend Dank im Voraus.
 
Voraussetzungen: Es müssen 2 Tabellenblätter bereits existieren, wobei in Tabelle1 die "Ur"-Daten stehen

Visual Basic:
Dim i As Long
Dim j As Long

'Erstmal Tabelle1 komplett nach Tabelle2 kopieren
For i=1 to LetzteZeileVonTabelle1   '<--Hier die richtige Zeilenzahl eintragen

For j=1 to LetzteSpalteVonTabelle1   '<--Hier die richtige Spaltenzahl eintragen

Tabelle2.Cells(i, j)=Tabelle1.Cells(i, j)

Next

Next

For i=LetzteZeileVonTabelle2 To 2 Step-1   'LetzteZeile blabla - siehe oben

If Tabelle2.Cells(i,1)=Tabelle2.Cells(i-1,1) Then

If Tabelle2.Cells(i,2)>Tabelle2.Cells(i-1,2) Then Tabelle2.Rows(i).Delete

End If

Next
 
erst mal vielen Dank für schnelle Antwort.

ich habe es ausprobiert aber ich kriege es irgendwie nicht da ich von makro weniger verstehe, könntest du mal Bitte erklären was das genau macht. Okey ich verstehe schon er löscht in der 2 te Sheet dass die Zeile mit den kleineren Versionsnummer. Das mag ja sein aber tun bei mir zumindest noch nicht :-(
 
Arrgg, Mist. Hab nen Fehler gemacht.

Zeile 19 muss so lauten
Visual Basic:
If Tabelle2.Cells(i,2)<Tabelle2.Cells(i-1,2) Then Tabelle2.Rows(i).Delete

Hab "grösser" und "kleiner" verwechselt

Im ersten Teil der Funktion wird Tabelle1 komplett nach Tabelle2 geschrieben.
Im zweiten Teil laufen wir rückwärts durch Tabelle2.
Zuerst wird geprüft, ob die aktuelle ID (angegeben durch Zeile i) mit der ID der Zeile davor (Zeile i-1) übereinstimmt.
Falls ja, prüfe ob die Version der aktuellen Zeile "kleiner" ist als die in der Zeile davor.
Falls ja, lösch die aktuelle Zeile.

EDIT: Damit das funktioniert, muss Tabelle1 sortiert sein wie folgt: Aufsteigend nach ID, Absteigend nach Version.
 
Hallo noch Mal,

ich habe erst heute ausprobieren können.
folgendes: Das vergleicht die Versionen von entsprechende IDs nicht miteinander sondern nimmt erste ID. Könnte man da etwas ändern?

Und wie kann es Komplette Tabelle mit Makro kopiert werden?


Wenn du mir erst die Fragen beantworten könntest werde ich dir Dankbar.
 

Neue Beiträge

Zurück