Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
996to1000
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateien vergleichen-doppelte löschen

Dateien vergleichen-doppelte löschen
04.08.2008 19:48:00
Andi
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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien vergleichen-doppelte löschen
04.08.2008 20:30:00
Daniel
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

Anzeige
AW: Dateien vergleichen-doppelte löschen
04.08.2008 21:16:31
Andi
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

AW: Dateien vergleichen-doppelte löschen
04.08.2008 21:41:00
Ramses
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

Anzeige
AW: Dateien vergleichen-doppelte löschen
04.08.2008 22:23:17
Daniel
Hi
lad mal die Beispieldateien hoch.
nur anhand von konketen Beispielen lässt sich so ein Makro testen und damit fehlerfrei erstellen.
Gruß, Daniel

AW: fehler gefunden
04.08.2008 22:31:00
Daniel
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

Anzeige
AW: fehler gefunden
05.08.2008 13:32:57
Andi
Das Problem wurde durch Daniel gelöst - Vielen Dank für Eure Hilfe.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige