Excel VBA: doppelter Satz finden und löschen

18/01/2010 - 13:25 von Beck, Alwin | Report spam
Excel 2003

Hallo,
ich importiere per VBA zahlreiche CSV Dateien.
Jede CSV wird in ein Tabellenblatt importiert.

Es wird hier jedoch in die CSV immer ein doppelter Eintrag
erzeugt z.B. ArchivAn vom 07.01.2010 08:02:32,58. Oder
bei ArchivAus 07.01.2010 18:01

Am Tag können zwar Datensàtze mehrfach vorkommen, aber wenn
ein Datensatz komplett idetisch ist, soll dieser gelöscht werden,
so dass dieser nur einmal vorkommt.

Wie kann ich diese per VBA prüfen und dann löschen ?



ArchivAn 07.01.2010 8:02:32,58 Archiv1 maier
ArchivAn 07.01.2010 8:02:32,58 Archiv1 maier
ArchivAus 07.01.2010 18:01 Archiv1 maier
ArchivAus 07.01.2010 18:01 Archiv1 maier
ArchivAn 08.01.2010 8:05:12,94 Archiv1 maier
ArchivAn 08.01.2010 8:05:13,05 Archiv1 maier


Danke
MfG
Albe
 

Lesen sie die antworten

#1 Andreas Killer
18/01/2010 - 13:33 | Warnen spam
Beck, Alwin schrieb:

Am Tag können zwar Datensàtze mehrfach vorkommen, aber wenn
ein Datensatz komplett idetisch ist, soll dieser gelöscht werden,
so dass dieser nur einmal vorkommt.

Wie kann ich diese per VBA prüfen und dann löschen ?



Sub LöscheDoppelte(Optional Bereich As Range = Nothing)
'SpezialFilter: Löscht alle doppelten Datensàtze im ( _
markierten) Bereich
Dim Y As Long, Del As Range

If Bereich Is Nothing Then
'Sind Zellen markiert?
If Not TypeOf Selection Is Range Then Exit Sub
'Aktuellen Bereich übernehmen
Set Bereich = Selection
End If
On Error GoTo ErrorHandler

'Daten filtern
Bereich.AdvancedFilter Action:=xlFilterInPlace, Unique:=True, _
CriteriaRange:=Empty
'Wurden Daten gefiltert?
If Not ActiveSheet.FilterMode Then Exit Sub
'Ermittle alle unsichtbaren Zellen
For Y = 1 To Bereich.Rows.Count
If Bereich.Rows(Y).Hidden Then
If Del Is Nothing Then
Set Del = Bereich.Rows(Y)
Else
Set Del = Union(Del, Bereich.Rows(Y))
End If
End If
Next
'Filter entfernen
ActiveSheet.ShowAllData

'Zellen löschen
If Not Del Is Nothing Then _
Del.Delete Shift:=xlShiftUp
Exit Sub

ErrorHandler:
MsgBox Err.Description, , "LöscheDoppelte"
End Sub

Ähnliche fragen