Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1036to1040
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
Inhaltsverzeichnis

Problem mit Löschmakro in Excel (VBA)

Problem mit Löschmakro in Excel (VBA)
07.01.2009 15:33:31
Seluaner
Hallo allerseits
Ich habe eine Excel - Datei welche folgenden Aufbau hat:
siehe Datei ! https://www.herber.de/bbs/user/58165.xls
Nun soll folgendes mittels dem untenstehenden Makro geschehen:
- In der Excel - Datei sollen alle doppelten Datensätze gelöscht werden.
Und zwar sollen diese komplett gelöscht werden, wenn wirklich komplett identisch (vergleich der Datensätze über alle Spalten)
(es soll also - falls doppelt oder mehrfach vorhanden komplett gelöscht werden)
In beiligender Excel-Datei würde das bedeuten, dass die Zeile 3 und 4 komplett gelöscht würden, da 100% identisch !
Den untenstehenden Makro - Code (welchen ich übrigens von einem netten Forumanen hier vor einiger Zeit erhalten hatte) möchte ich also
so anpassen, dass er nicht nur die Spalte A auf Mehrfacheinträge überprüft, sondern die kompletten Datensätze (Spalten A bis und mit E)
Doch wie geht das ?
Was muss ich anpassen ?
Lasse ich diesen Code nun über meine Excel-Datei laufen, so löscht er mir alle Datensätze bis auf den letzten in Zeile 9, da er jeweils nur die
Werte in der Spalte A vergleicht.
WER KANN MIR HELFEN ?

Sub Doppel_Loesch()
Dim lngRow As Long, lngLast As Long
Dim intCol As Integer
Dim rngDel As Range
intCol = Selection(1).Column
lngLast = Cells(Rows.Count, intCol).End(xlUp).Row
On Error GoTo ErrExit
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For lngRow = 1 To lngLast
If Application.CountIf(Columns(intCol), Cells(lngRow, intCol)) > 1 Then
If rngDel Is Nothing Then
Set rngDel = Rows(lngRow)
Else
Set rngDel = Union(rngDel, Rows(lngRow))
End If
End If
Next
If Not rngDel Is Nothing Then rngDel.Delete
Set rngDel = Nothing
ErrExit:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Range("A2").Select
Windows("Daten_Import Aufteiler.xls").Activate
Sheets("Tabelle1").Select
MsgBox "DATEN ERFOLGREICH IN NEUER ARBEITSMAPPE AUFBEREITET", vbInformation, "Programm-Ende"
End Sub


4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Löschmakro in Excel (VBA)
07.01.2009 15:48:07
Lars
Hi,
in deinem Beispiel gibts keine identischen Sätze über alle Spalten.
Das geht ansonsten mit dem Spezialfilter, ohne Duplikate.
mfg Lars
AW: Problem mit Löschmakro in Excel (VBA)
07.01.2009 16:02:17
D.Saster
Hallo,

Sub Doppel_Loesch()
Dim lngRow As Long, lngLast As Long
Dim rngDel As Range
Dim oDict As Object, strTmp As String, arrTmp
Set oDict = CreateObject("Scripting.Dictionary")
lngLast = Cells(Rows.Count, 1).End(xlUp).Row
On Error GoTo ErrExit
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For lngRow = 1 To lngLast
arrTmp = Range(Cells(lngRow, 1), Cells(lngRow, 5))
strTmp = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(arrTmp)), " ")
If oDict.exists(strTmp) Then
If rngDel Is Nothing Then
Set rngDel = Rows(lngRow)
Else
Set rngDel = Union(rngDel, Rows(lngRow))
End If
Else
oDict.Add strTmp, "x"
End If
Next
If Not rngDel Is Nothing Then rngDel.Delete
Set rngDel = Nothing
ErrExit:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Range("A2").Select
End Sub


Gruß
Dierk

Anzeige
AW: Problem mit Löschmakro in Excel (VBA)
07.01.2009 20:40:12
Seluaner
Das wars !
VIELEN HERZLICHEN DANK !!!!!! Ihr seid einfach SPITZE !!!!
AW: Problem mit Löschmakro in Excel (VBA)
07.01.2009 18:29:00
Tino
Hallo,
ist Deine letzte Spalte frei, kannst Du es z. Bsp. so machen.
Aber Lars hat recht, da sind keine Zeilen die gleich sind!
Sub Makro2()
Dim Bereich As Range

Columns("A:E").AdvancedFilter Action:=xlFilterInPlace, Unique:=True

With ActiveSheet.UsedRange
    Set Bereich = Range("A2", Cells(.Cells(.Cells.Count).Row, 1)).Offset(0, Columns.Count - 1)
End With
 
 Bereich.SpecialCells(xlVisible) = "X"

 On Error Resume Next
  ActiveSheet.ShowAllData
  If Err.Number = 0 Then
   Bereich.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  End If
  Bereich.Clear
  
End Sub


Gruß Tino

Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige