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

Tabellen vergleichen-NICHT-doppelte Einträge lösch

Tabellen vergleichen-NICHT-doppelte Einträge lösch
20.08.2006 13:51:49
Olli
Hallo Forumsgemeinde,
ich hab da ein Problem und bin bislang noch nicht zu einer Lösung gekommen. Daher meine große Hoffnung, dass mir hier wer helfen kann ;O)
ich habe zwei Tabellen mit jeweils bis zu 1000 Kundendaten (Zeilen).
In der Spalte A befindet sich die jeweilige Kundennummer. Nun möchte ich per Makro die beiden Tabellen miteinander vergleichen und in Tabelle A alle Kunden (Zeilen) löschen, deren Kundennummer in der Tabelle B NICHT auftauchen. Also im Grunde möchte ich zwei Tabellen mit übereinstimmenden Kundennummern.
Kann mir da wer helfen?
Wäre toll
Gruß
Olli

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellen vergleichen-NICHT-doppelte Einträge lösch
20.08.2006 15:01:41
Andreas
Hallo,
bevor ich mich an diese Aufgabe setze noch eine kurze frage. Sollen denn auch die Daten, in Tabelle B gelöscht werden die nicht in Tabelle A stehen?
Oder willst du das nur die Daten aus Tabelle A gelöscht werden die nicht in Tabelle B stehen?
Gruß Andreas
AW: Tabellen vergleichen-NICHT-doppelte Einträge l
20.08.2006 18:34:51
Olli
Hallo Andreas,
nett, dass Du mir helfen möchtest..also zum Verständnis....ich mache über unsere firmeneigene Software mehrere Abfragen, dessen Ergebnis ich dann als Textdateien exportiere und dann in Excel importiere um sie weiter zu verarbeiten...leider lassen sich bestimmte Abfragen / Kriterien nicht miteinander verknüpfen, so dass ich nun einen Umweg gehen muss.
Entsprechend besteht Tabelle A aus dem gesamten Kundenstamm, die ein Kriterium erfüllen. Tabelle B besteht aus dem gesamten Kundenstamm, die ein anderes Kriterium erfüllen. Nun möchte ich in Tabelle B nur noch die Kundendaten vorfinden, die auch in Tabelle A vorhanden sind und somit also den Bestand gefiltert haben, der BEIDE Kriterien erfüllt.
Hierbei reicht es aber aus, wenn Tabelle A gefiltert/reduziert wird.
Konnte ich mich einigermaßen verständlich ausdrücken? Schwer zu erklären....
Gruß
Olli
Anzeige
AW: Tabellen vergleichen-NICHT-doppelte Einträge l
20.08.2006 19:24:48
Josef
Hallo Olli!
Mit diesem Code werden die "Doppler" in ein drittes Tabellenblatt kopoiert.
Sub Doppler()
Dim rng As Range, rngF As Range, rngFind As Range, rngCopy As Range
Dim objSh1 As Worksheet, objSh2 As Worksheet, objSh3 As Worksheet


Set objSh1 = Sheets("Tabelle1") 'Tabelle in der gesucht wird
Set objSh2 = Sheets("Tabelle2") 'Tabelle mit Vergleichsdaten
Set objSh3 = Sheets("Tabelle3") 'Tabelle in die kopiert wird

With objSh2
  Set rngFind = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With

For Each rng In rngFind
  Set rngF = objSh1.Range("A:A").Find(What:=rng, LookAt:=xlWhole)
  If Not rngF Is Nothing Then
    If rngCopy Is Nothing Then
      Set rngCopy = rngF.EntireRow
    Else
      Set rngCopy = Union(rngCopy, rngF.EntireRow)
    End If
  End If
Next

If Not rngCopy Is Nothing Then rngCopy.Copy objSh3.Cells(1, 1)

Set objSh1 = Nothing
Set objSh2 = Nothing
Set rngFind = Nothing
Set rngF = Nothing
Set rngCopy = Nothing

End Sub


Gruß Sepp

Anzeige
AW: Tabellen vergleichen-NICHT-doppelte Einträge lösch
20.08.2006 20:35:42
Gerd
Hallo Olli,
und mit diesem Code werden die Zeilen der "Einmaligen" in der Tabelle1 ausgeblendet.

Sub Test()
Dim wksA As Worksheet, wksB As Worksheet
Dim rngSuchbereich As Range, rngNixGefunden As Range
Dim LZ As Long, x As Long
Set wksA = ThisWorkbook.Worksheets("Tabelle1")
Set wksB = ThisWorkbook.Worksheets("Tabelle2")
Set rngSuchbereich = wksB.Range(wksB.Cells(1, 1), wksB.Cells(Rows.Count, 1).End(xlUp))
LZ = wksA.Cells(Rows.Count, 1).End(xlUp).Row
For x = 1 To LZ
If rngSuchbereich.Find(CStr(wksA.Cells(x, 1).Value), lookat:=xlWhole) Is Nothing Then
If rngNixGefunden Is Nothing Then
Set rngNixGefunden = wksA.Rows(x)
Else
Set rngNixGefunden = Union(rngNixGefunden, Rows(x))
End If
End If
Next
If Not rngNixGefunden Is Nothing Then
rngNixGefunden.EntireRow.Hidden = True
Else
MsgBox "Kundennummern sind alle auch in Tabelle2 vorhanden!"
End If
End Sub

Gruß
Gerd
Anzeige
AW: Tabellen vergleichen-NICHT-doppelte Einträge l
20.08.2006 21:20:16
Olli
Hallo Josef und Gerd,
@ Josef: klappt....zwar mit 3. Tabelle, aber gewünschtes Ziel ist erreicht..Danke
@ Gerd: Bei Deinem Code bekomme ich den Fehler 1004: "Methode Union für das Objekt _Global fehlgeschlagen.
Erfolgt bei der Zeile
Set rngNixGefunden = Union(rngNixGefunden, Rows(x))
Der Rows-Wert ist bei 2452...dort ist die Tabelle aber bereits zu Ende....(hat 2450 Zeilen)
Ne Idee woran das liegt? Habe Deinen Code nicht geändert...
Gruß
Olli
AW: Tabellen vergleichen-NICHT-doppelte Einträge l
20.08.2006 23:04:47
Josef
Hallo Olli!
Löschen in Originaltabelle geht so.
Sub Doppler()
Dim rng As Range, rngF As Range, rngFind As Range, rngDel As Range
Dim objSh1 As Worksheet, objSh2 As Worksheet


Set objSh1 = Sheets("Tabelle1") 'Tabelle in der gesucht und gelöscht wird
Set objSh2 = Sheets("Tabelle2") 'Tabelle mit Vergleichsdaten


With objSh1
  Set rngFind = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With

For Each rng In rngFind
  Set rngF = objSh2.Range("A:A").Find(What:=rng, LookAt:=xlWhole)
  If rngF Is Nothing Then
    If rngDel Is Nothing Then
      Set rngDel = rng.EntireRow
    Else
      Set rngDel = Union(rngDel, rng.EntireRow)
    End If
  End If
Next

If Not rngDel Is Nothing Then rngDel.Delete

Set objSh1 = Nothing
Set objSh2 = Nothing
Set rngFind = Nothing
Set rngF = Nothing
Set rngDel = Nothing

End Sub


Gruß Sepp

Anzeige
AW: Tabellen vergleichen-NICHT-doppelte Einträge lösch
21.08.2006 08:47:48
Gerd
Hallo Olli,
nein, eine schnelle Erklärung habe ich für diesen Fehler leider nicht.
Ich hatte den Code bei mir getestet. Da lief er.
Du kannst aber auch den neuen Code von Sepp nehmen u. ganz unten
leicht variieren, um "einmalige" statt zu löschen, nur auszublenden.
If Not rngDel Is Nothing Then rngDel.EntireRow.Hidden=true
Gruß
Gerd
perfekt...danke an Euch zwei für die Hilfe
22.08.2006 19:40:59
Olli
Hallo Ihr zwei...
Code von Josef klappt....vielen Dank für Eure Hilfe...riesig...
Wünsch Euch noch nen angenehmen Abend!!
Gruß
Olli

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige