VBA - doppelte Datensätze aktualisieren

Bild

Betrifft: VBA - doppelte Datensätze aktualisieren
von: BerndSchweiger
Geschrieben am: 12.03.2005 00:45:10
Hallo,
Habe folgendes Problem:
Ich vergleiche mit meinem VBA-Code Tabelle1 mit Tabelle2. Wie ihr sicherlich nachvollziehen könnt, werden alle außer den in Tabelle2 vorkommenden Datensätze gelöscht. Was mir jetzt aber noch fehlt ist, dass Datensätze, bei welchen die Spalten A-C in Tabelle1 und Tabelle2 identisch sind und sich nur der Inhalt der Tabelle2 im Bereich der Spalten D-G abweicht in Tabelle1 aktualisiert werden.
Leider bekomm ich das mit meinen jetzigen VBA-Kenntnissen nicht alleine hin.
Vielleicht kann mir ja jemand dabei helfen.
Schon jetzt vielen Dank
Hier mein bisheriger Code:
'Vergleich Tabelle1 mit Tabelle2 - alle gleichen Inhalte der Spalte A-C werden gelöscht
Dim LoI As Long
Dim LoJ As Long
Dim LoLetzte1 As Long
Dim LoLetzte2 As Long
LoLetzte1 = 65536
With Worksheets("Tabelle1")
If .Range("A65536") = "" Then LoLetzte1 = .Range("A65536").End(xlUp).Row
End With
LoLetzte2 = 65536
With Worksheets("Tabelle2")
If .Range("B65536") = "" Then LoLetzte2 = .Range("B65536").End(xlUp).Row
End With
For LoI = 1 To LoLetzte1
For LoJ = 1 To LoLetzte2
' Leerzellen nicht kennzeichnen
If Worksheets("Tabelle1").Cells(LoI, 1) <> "" Then
If Worksheets("Tabelle1").Cells(LoI, 1) = Worksheets("Tabelle2").Cells(LoJ, 1) And _
Worksheets("Tabelle1").Cells(LoI, 2) = Worksheets("Tabelle2").Cells(LoJ, 2) And _
Worksheets("Tabelle1").Cells(LoI, 3) = Worksheets("Tabelle2").Cells(LoJ, 3) Then
Worksheets("Tabelle1").Cells(LoJ, 1).EntireRow.Clear
End If
End If
Next LoJ
Next LoI

' Löschen der Leerzeilen
Cells.Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="="
Rows("2:1000").Select
Selection.Delete Shift:=xlUp
Cells.Select
Selection.AutoFilter

Hier ist so ein Code, der doppelte Einträge aktualisiert, aber die Umstellung auf meine Bedürfnisse schaffe ich leider nicht.
For i = 1 To AnzahlAufträge
'Ist der Datensatz schon vorhanden?
Cells(1, 1).Select
Selection.CurrentRegion.Select
BereichZeilen = Selection.Rows.Count
For Each zelle In ActiveSheet.Cells.Range("A:A")
If CStr(zelle.Value) = "" Then Exit For
If CStr(zelle.Value) = CStr(daten(i, 1)) Then
'vorhandenen Eintrag aktualisieren
Cells(zelle.Row, zelle.Column).Select
Application.StatusBar = "Aktualisierung von " & daten(i, 1) & " ..."
Call DatenAusgeben(daten, i)
aktualisieren = True
Exit For
End If
Next
Gruß
Bernd

Bild

Betrifft: AW: VBA - doppelte Datensätze aktualisieren
von: Hajo_Zi
Geschrieben am: 12.03.2005 09:07:05
Hallo Bernd,
eins verstehe ich immer nicht. Das erste was gelöscht wird ist der Ursprungshinweis. Es ist doch keine Schande den Ersteller zu nennen, das ist jedenfalls meine Auffassung.
Von mir kommt keine Antwort.
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


Bild

Betrifft: @Hajo
von: BerndSchweiger
Geschrieben am: 12.03.2005 12:34:10
@ Hajo
Ist ja richtig - hab ich auch kein Problem damit.
Nur hilft das letztlich mir dadurch auch nicht viel weiter - aber hast recht, die ständige Hilfe sollte auch mal gewürdigt werden - nächstes Mal schreib ichs dazu!
Den ersten Teil findet man durchs googeln. Bin dann auf der Seite:
http://home.media-n.de/ziplies/
gelandet. Ist auch echt super hilfreich - also schaut alle mal rein.
Und somit Dir noch ein kräftiges Dankeschön
Hab nur noch ne Kleinigkeit ändern müssen.
Den zweiten Teil mit den Leerzeilen löschen hab ich selbst per Macrorecorder aufgezeichnet und eingefügt.
Den letzten Teil mit dem aktualisieren, hab aus meiner Firma aus einer Excel-Datei, welche ein ehemaliger Mitarbeiter erstellt hat. Leider ist der mittlerweile weg.
Gruß
Bernd
 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA - doppelte Datensätze aktualisieren"