Microsoft Excel

Herbers Excel/VBA-Archiv

Dateien vergleichen-doppelte löschen

Betrifft: Dateien vergleichen-doppelte löschen von: Andi
Geschrieben am: 04.08.2008 19:48:00

Hallo Leute,

ich brauche unbedingt ein Makro. Ich hoffe Ihr könnt helfen:

Ich habe zwei Excel-Dateien. In beiden stehen unter anderem in Spalte C Zahlen, die miteinander verglichen werden sollen. Sofern die Zahlen der zweiten Datei in der ersten vorkommen, soll die jeweilige Zeile in der ersten Datei gelöscht werden.

Zum besseren Verständnis:

Ursprung:

DateiA
SpalteC
1
5
3
4
2

DateiB
SpalteC
2
3
5

Ergebnis:

DateiA
SpalteC
1
4

Was mit den Daten in Datei B passiert ist egal. Da ich nicht weiß, ob es relevant ist: Die Spalten haben Überschriften.

Vielen Danke im Voraus.
Andi

  

Betrifft: AW: Dateien vergleichen-doppelte löschen von: Daniel
Geschrieben am: 04.08.2008 20:30:35

HI

1. beide Dateien öffnen
2. in Datei Hilfsspalte einfügen mit der Formel (einzugeben ab Zeile 2):
=ZÄHLENWENN([DateiB.xls]Tabelle1!$C:$C;C2)
3. alle Zeilen, in denen in der Hilfsspalte ein Wert grösser 0 steht, löschen

(bei grossen Datenmengen empfielt es sich hier, die Daten vorher nach der Hilfsspalte zu sortieren, bzw davor noch durch KOPIEREN und INHALTE-EINFÜGEN-WERTE die Formelen durch FIX-Werte zu ersetzen. das beschleunigt auch das Arbeiten mit dem Autofilter)

als Makro dann so

Sub Löschen()
ThisWorkbook.Sheets(1).Columns(1).Insert
With ThisWorkbook.Sheets(1)
    With Range(.Cells(2, 1), .Cells(Rows.Count, 4).End(xlUp).Offset(0, -3))
        .FormulaLocal = "=wenn(zählenwenn([DateiB.xls]Tabelle1!C:C;D2)=0;Zeile();wahr)"
        .Formula = .Value
        .EntireColumn.Sort key1:=.Cells(1, 1), order1:=xlAscending, header:=xlNo
        On Error Resume Next
        .SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
        On Error GoTo 0
        .EntireColumn.Delete
    End With
End With
End Sub




Zellbezüge und Dateinamen ggf noch anpassen.
Das Makro muss in Datei A
es müssen beide Dateien geöffnet sein.

Gruß, Daniel


  

Betrifft: AW: Dateien vergleichen-doppelte löschen von: Andi
Geschrieben am: 04.08.2008 21:16:31

Hallo Daniel,
zunächst einmal danke für die schnelle Antwort.

Das Makro gibt nur leider in DateiA 1 und 2 als Ergebnis wieder (was ja falsch ist).

(Den Ansatz mit der Hilfsspalte und Formel hatte ich auch bereits - da war ich ja zumindest schonmal auf der richtigen Fährte ;-)
Da es aber viele Dateien sind, die (nach und nach) miteinander verglichen werden sollen, wäre ein Makro erheblich praktischer.

Gruß,
Andi


  

Betrifft: AW: Dateien vergleichen-doppelte löschen von: Ramses
Geschrieben am: 04.08.2008 21:41:20

Hallo

ungetestet aber probier mal

Option Explicit

Sub DeleteDoubleValues()
    Dim srcWkb As Workbook, tarWkb As Workbook
    Dim srcWks As Worksheet, tarWks As Worksheet
    Dim srcCol As Integer, tarCol As Integer
    Dim i As Long
    Dim tmpVal As Variant
    Set srcWkb = Workbooks("Deine Quellmappe1.xls")
    Set srcWks = srcWkb.Worksheets("Tabelle mit Daten")
    'Spalte wo die Quelldaten stehen
    srcCol = 1
    Set tarWkb = Workbooks("Deine Kontrollmappe2.xls")
    Set tarWks = tarWkb.Worksheets("Tabelle mit KontrollDaten")
    'Spalte wo die KontrollDaten stehen
    tarCol = 1
    With srcWks
        'Endet in Zeile 2
        For i = .Cells(Rows.Count, srcCol) To 2 Step -1
            tmpVal = .Cells(i, srcCol)
            If Not tarWks.Columns(tarCol).Find(tmpVal) Then
                .Rows(i).Delete
            End If
        Next i
    End With
End Sub


Gruss Rainer


  

Betrifft: AW: Dateien vergleichen-doppelte löschen von: Daniel
Geschrieben am: 04.08.2008 22:23:17

Hi
lad mal die Beispieldateien hoch.
nur anhand von konketen Beispielen lässt sich so ein Makro testen und damit fehlerfrei erstellen.
Gruß, Daniel


  

Betrifft: AW: fehler gefunden von: Daniel
Geschrieben am: 04.08.2008 22:31:06

Hallo

hab grad den Fehler gefunden.

Tausch mal diese Zeile

.EntireColumn.Sort key1:=.Cells(1, 1), order1:=xlAscending, header:=xlNo


durch diese aus

 .EntireRow.Sort key1:=.Cells(1, 1), order1:=xlAscending, header:=xlNo



dann sollte es funktionieren.

Gruß, Daniel


  

Betrifft: AW: fehler gefunden von: Andi
Geschrieben am: 05.08.2008 13:32:57

Das Problem wurde durch Daniel gelöst - Vielen Dank für Eure Hilfe.


 

Beiträge aus den Excel-Beispielen zum Thema "Dateien vergleichen-doppelte löschen"