Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
824to828
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
824to828
824to828
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

doppelte Zeilen in andere Tabelle kopieren

doppelte Zeilen in andere Tabelle kopieren
02.12.2006 07:12:57
Wolfgang
Hallo*
mit untenstehendem Code soll erreicht werden, doppelte Zeilen innerhalb eines Tabellenblattes zu löschen; Was die farbliche Markierung danach zu bedeuten hat, weiß ich nicht (habe den Code unter Recherche entdeckt)und wäre für meine Zwecke nicht erforderlich; Wie könnte bzw. müßte der Code geändert werden, wenn weiterhin zwar Zeilen, in denen sich die gleichen Datensätze befinden, gelöscht werden sollen, aber die aussortierten Datensätze dann in ein weiteres (noch zu generierendes) Tabellenblatt kopiert werden sollen. Ist das überhaupt möglich? - Ich wäre erneut für eine Rückmeldung sehr dankbar.
Herzliche Grüße
Wolfgang
Option Explicit

Sub Tabelle_überprüfen()
Dim tx As String, tx2 As String
Dim i As Long, j As Long, k As Long, laR As Long
Application.ScreenUpdating = False
laR = Cells(Rows.Count, 2).End(xlUp).Row
For i = 1 To laR
If Cells(i, 3).Interior.ColorIndex <> 45 Then
tx = Cells(i, 2).Value
tx2 = Cells(i, 4).Value
For j = i + 1 To laR + 1
If Cells(j, 2).Value = tx Then
If Cells(j, 4).Value = tx2 Then
If Cells(i, 3).Value < Cells(j, 3).Value Then
Cells(i, 3).Interior.ColorIndex = 45
Else
Cells(j, 3).Interior.ColorIndex = 45
End If
End If
End If
Next j
End If
Next i
For k = laR To 1 Step -1
If Cells(k, 3).Interior.ColorIndex = 45 Then
Cells(k, 3).EntireRow.Delete
End If
Next k
Application.ScreenUpdating = True
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: doppelte Zeilen in andere Tabelle kopieren
02.12.2006 12:27:51
fcs
Hallo Wolfgang,
das kopieren der Doppelten Zeilen in eine separate Tabellen ist kein Problem.
Zu deine Verständnis ein paar Erläuterngen, was das Makro macht:
In der 1. großen For-Next-Schleife mit Zähler i für die äußere und Zähler j für die innere Schleife werden alle Zeilen geprüft. Entsprechend dem Prüfergebnis wird in einer der Zeile die Zelle in Spalte C (3) mit der Farbe 45 ausgefüllt.
Geprüft wird immer ob in den Spalten B (2) und D (4) der Zeilen i und j die Werte identisch sind und in Spalte C welcher Wert der kleinere ist.
Die Zeile in der der kleinere Wert steht wird in Spalte C farblich markiert.
Diese Prüfbedingungen muss du ggf. für deine Datei anpassen.
In der 2. For-Next-Schleife mit dem Zähler k werden die in Spalte C farblich markierten Zeilen glöscht, wobei das Löschen bei der unetrsten Zeile beginnt.
Gruss
Franz

Sub Tabelle_überprüfen()
Dim tx As String, tx2 As String
Dim i As Long, j As Long, k As Long, laR As Long
Dim wksQuelle As Worksheet, wksZiel As Worksheet
Set wksQuelle = ActiveSheet
With wksQuelle
Application.ScreenUpdating = False
laR = .Cells(.Rows.Count, 2).End(xlUp).Row
'Doppelte in Spalte 3 (C) mit Farbe 45 markieren
For i = 1 To laR
If .Cells(i, 3).Interior.ColorIndex <> 45 Then
tx = .Cells(i, 2).Value
tx2 = .Cells(i, 4).Value
For j = i + 1 To laR + 1
If .Cells(j, 2).Value = tx Then
If .Cells(j, 4).Value = tx2 Then
If .Cells(i, 3).Value < .Cells(j, 3).Value Then
.Cells(i, 3).Interior.ColorIndex = 45
Else
.Cells(j, 3).Interior.ColorIndex = 45
End If
End If
End If
Next j
End If
Next i
'neues Blatt für Kopien der Doppelten anlegen
ActiveWorkbook.Worksheets.Add
Set wksZiel = ActiveSheet
i = 0 'Zeilenzähler für die Doppelten
For k = laR To 1 Step -1
If wksQuelle.Cells(k, 3).Interior.ColorIndex = 45 Then
'Doppelte Zeile kopieren
i = i + 1
.Cells(k, 3).EntireRow.Copy Destination:=wksZiel.Cells(i, 1)
wksZiel.Cells(i, 3).Interior.ColorIndex = xlColorIndexNone
wksZiel.Cells(i, "IV").Value = k 'Zeilennummer temporär für spätere Sortierung eintragen
'Doppelte Zeile löschen
.Cells(k, 3).EntireRow.Delete
End If
Next k
End With
'kopierte Zeilen in ursprüngliche Reihenfolge umsortieren
With wksZiel
If i > 0 Then
.UsedRange.Sort Key1:=.Cells(1, "IV"), Order1:=xlAscending, Header:=xlNo
.Range("IV:IV").Clear 'temporäre Zeilennummer wieder löschen
End If
End With
Application.ScreenUpdating = True
End Sub

Anzeige
Danke Franz, klappt super
02.12.2006 19:38:26
Wolfgang
Hallo Franz,
erneut herzlichen Dank für Deine Unterstützung. Der Code läuft wunderbar. Dank Deiner Erläuterungen weiß ich auch nun die Details und kann unterschiedliche Ansätze damit klären. Nochmals herzlichen Dank und ein schönes Wochenende.
Gruß - Wolfgang

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige