doppelte Datensätze löschen

Bild

Betrifft: doppelte Datensätze löschen
von: Silvi
Geschrieben am: 19.04.2005 09:56:30
Hallo!
Habe vor einiger Zeit mit Eurer Hilfe ein Makro erstellt, daß mir doppelte Datensätze löscht. Jetzt habe ich festgestellt, daß es besser wäre den alten bzw doppelten Datensatz zu überschreiben. Kann mir jemand dabei helfen? Hier ein Auszug aus dem Makro:
Dim iRow As Integer, iRowL As Integer
iRowL = Cells(Cells.Rows.Count, 1).End(xlUp).Row
For iRow = iRowL To 1 Step -1
If WorksheetFunction.CountIf(Columns(1), Cells(iRow, 1)) > 1 Then
Rows(iRow).Delete
End If
Next iRow
LG
Silvi

Bild

Betrifft: AW: doppelte Datensätze löschen
von: P@ulchen
Geschrieben am: 19.04.2005 10:13:19
Hallo Silvi,
mit was soll er denn überschrieben werden ?
Beispiel (hier wird "doppelt" in die betreffenden Zellen eingetragen):


Dim iRow As Integer, iRowL As Integer
iRowL = Cells(Cells.Rows.Count, 1).End(xlUp).Row
For iRow = iRowL To Step -1
If WorksheetFunction.CountIf(Columns(1), Cells(iRow, 1)) > 1 Then
Cells(iRow, 1).Value = "doppelt"
End If
Next iRow

     Code eingefügt mit Syntaxhighlighter 2.1

Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: AW: doppelte Datensätze löschen
von: Silvi
Geschrieben am: 19.04.2005 10:22:12
Hallo Paulchen!
Danke für die schnelle Reaktion. Also, es sollen Daten aus einer Datei in eine Datenbank übertragen werden. In der ersten Spalte der DB steht eine Nummer die abgeglichen wird und wenn doppelt gelöscht wird, jetzt kommt es aber vor, daß die Nummer schon besteht und dann wird nicht der neue Datensatz übernommen, sondern der alte bleibt stehen und das ist nicht unbedingt so praktisch. Ich hab keine große Ahnung von Makros und komm da nicht alleine weiter. HILFE!
Silvi
Bild

Betrifft: AW: doppelte Datensätze löschen
von: Sil
Geschrieben am: 19.04.2005 10:33:51
...die Daten werden in der Datenbank in der letzten Zeile unten eingefügt und dann wird nach doppelten gesucht und scheinbar der unten stehende Datensatz gelöscht, wie kann man das in dem Makro ändern?
Silvi
Bild

Betrifft: AW: doppelte Datensätze löschen
von: P@ulchen
Geschrieben am: 19.04.2005 10:38:42
Hallo Silvi,
es wäre vielleicht sinnvoller, wenn Du mal den ganzen Code postest oder eine Beispieldatei hochlädst...ich versteh nur Bahnhof :-((
Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: AW: doppelte Datensätze löschen
von: Silvi
Geschrieben am: 19.04.2005 10:49:24
Hallo!
Hoffentlich hilft das jetzt...
<pre>
Sub Filtern_kopieren()
Application.ScreenUpdating = False
Workbooks.Open ("X:\Verzeichnis\Dateiname1.xls")
Workbooks("Dateiname 2").Sheets("Tabelle2").Activate
Range("A4:AW8").Select
Selection.Copy
Windows("Dateiname 1.xls").Activate

Range("A1").Activate
Do Until ActiveCell.Value = "" & "0"
ActiveCell.Offset(1, 0).Activate
Loop
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Activate
Dim iRow As Integer, iRowL As Integer
iRowL = Cells(Cells.Rows.Count, 1).End(xlUp).Row
For iRow = iRowL To 1 Step -1
If WorksheetFunction.CountIf(Columns(1), Cells(iRow, 1)) > 1 Then
Rows(iRow).Delete
End If
Next iRow
ActiveWorkbook.Save
Workbooks("Dateiname 2").Sheets("Tabelle1").Activate
Application.ScreenUpdating = True
End Sub</pre>
Bild

Betrifft: AW: doppelte Datensätze löschen
von: Silvi
Geschrieben am: 19.04.2005 11:06:47
so, jetzt schick ich noch die Datenbank (etwas verkürzt), vielleicht hilft das ja hoffentlich...
LG
Silvi
https://www.herber.de/bbs/user/21345.xls
Bild

Betrifft: AW: doppelte Datensätze löschen
von: P@ulchen
Geschrieben am: 19.04.2005 11:14:53
Hallo Silvi,
wenn ich Dich richtig verstehe, möchtest Du jeden Deiner Einträge in der Datenbank suchen und wenn vorhanden, dann soll der Datenbankeintrag aktualisiert werden, wenn nicht, dann als neuer Eintrag eingefügt werden ? Ist das so korrekt ?
Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: AW: doppelte Datensätze löschen
von: Silvi
Geschrieben am: 19.04.2005 11:16:28
JA! Genauso soll es sein! Geht das denn?
Bild

Betrifft: AW: doppelte Datensätze löschen
von: P@ulchen
Geschrieben am: 19.04.2005 11:49:03
Hallo Silvi,
Voraussetzung:
- In beiden Dateien stehen die abzugleichenden Rezepturnummern in Spalte A ab Zeile 2
- Pfad Deiner Datenbank anpassen
kopiere folgenden Code in ein allgemeines Modul und weise ihn einer Schaltfläche zu:


Sub Filtern_kopieren()
Dim wks1, wks2 As Worksheet
Dim FindNr As Range
Dim aRow1, aRow2 As Long
Application.ScreenUpdating = False
Set wks1 = ActiveSheet  'Deine Datei mit den neuen Daten
Workbooks.Open ("D:\Temp\Datenbank.xls")
Set wks2 = ActiveSheet  'Deine Datenbank
aRow1 = IIf(IsEmpty(wks1.Range("A65536")), wks1.Range("A65536").End(xlUp).Row, 65536)
For i = 2 To aRow1
    If wks1.Range("A" & i).Value <> "" Then
        Set FindNr = wks2.Columns(1).Find(wks1.Range("A" & i).Value, , , xlWhole)
        If Not FindNr Is Nothing Then
            wks1.Rows(i).Copy wks2.Rows(FindNr.Row)
        Else
            aRow2 = wks2.Range("A65536").End(xlUp).Row
            wks1.Rows(i).Copy wks2.Rows(aRow2 + 1)
        End If
    End If
Next
wks2.Save
Application.ScreenUpdating = True
End Sub

     Code eingefügt mit Syntaxhighlighter 2.1

Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: eine Frage noch!
von: Silvi
Geschrieben am: 19.04.2005 12:10:59
vielen Dank Paulchen, mußte noch ein bisschen frickeln aber ich glaube das wars soweit.
Nur eins noch, es sollen natürlich nur Werte und nicht die Formeln kopiert werden, wo muß ich dann dieses "Selection.PasteSpecial Paste:=x..." einfügen?
Schön, daß es dieses Forum gibt!
Gruß
Silvi
Bild

Betrifft: AW: eine Frage noch!
von: P@ulchen
Geschrieben am: 19.04.2005 12:19:55
Hallo Silvi,
so:


Sub Filtern_kopieren()
Dim wks1, wks2 As Worksheet
Dim FindNr As Range
Dim aRow1, aRow2 As Long
Application.ScreenUpdating = False
Set wks1 = ActiveSheet  'Deine Datei mit den neuen Daten
Workbooks.Open ("D:\Temp\Datenbank.xls")
Set wks2 = ActiveSheet  'Deine Datenbank
aRow1 = IIf(IsEmpty(wks1.Range("A65536")), wks1.Range("A65536").End(xlUp).Row, 65536)
For i = 2 To aRow1
    If wks1.Range("A" & i).Value <> "" Then
        Set FindNr = wks2.Columns(1).Find(wks1.Range("A" & i).Value, , , xlWhole)
        If Not FindNr Is Nothing Then
            wks1.Rows(i).Copy
            wks2.Rows(FindNr.Row).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
        Else
            aRow2 = wks2.Range("A65536").End(xlUp).Row
            wks1.Rows(i).Copy
            wks2.Rows(aRow2 + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
        End If
    End If
Next
Application.CutCopyMode = False
wks2.Save
Application.ScreenUpdating = True
End Sub

     Code eingefügt mit Syntaxhighlighter 2.1

Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: nochmals DANKE, es funkt. OT
von: Silvi
Geschrieben am: 19.04.2005 12:40:31
.
 Bild

Beiträge aus den Excel-Beispielen zum Thema "doppelte Datensätze löschen"