Supportnet / Forum / Tabellenkalkulation
Excel: doppelte Zeilen löschen
Frage
Hi... folgendes problem:
ich habe eine liste mit namen, welche ich als basis für ein drop down menü verwenden möchte. diese liste mit namen ändert sich allerdings jede woche und es kommen dieselben namen öfter vor. wie kann ich mit einem vba befehl die doppelten zeilen löschen. (die anwendung des spezialfilters --> keine duplikate funktionert zwar, ist allerdings keine vba und das problem ist das dann die doppelten einträge ausgeblendet werden und wenn ich dann den bereich für das drop down menü markiere funzt das nicht, weil er auch die ausgeblendetet zeilen mit nimmt)
also irgendwie möchte ich nur die doppelten einträge löschen und die dann noch vorhandenen (einfachen vorkommenden) namen untereinander stehen haben.
schon mal danke.
Antwort 1 von elkun
Hi,
ich habe das mal eben nachvollzogen und folgenden Vorschlag:
Daten markieren -> Spezialfilter (ohne Dublikate) -> Ergebnis kopieren -> in einer neuen Tabelle einfügen (vorhandene Daten können überschrieben werden) -> Filter, alle Datensätze anzeigen)
Damit hast du zwar 2 Tabellen (eine zur Dateneingabe, eine zur Ausgabe), aber mit einem Makro geht das ziemlich schnell.
Das Makro sieht in VBA folgendermaßen aus:
(Die Ranges sind anzupassen!!)
Sub Makro1()
'
' Makro1 Makro
'
Range("A1:A30").Select
Range("A1:A13").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Selection.Copy
Sheets("Tabelle2").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("Tabelle1").Select
Application.CutCopyMode = False
ActiveSheet.ShowAllData
Range("A1").Select
Sheets("Tabelle2").Select
End Sub
Viel Spass beim probieren!
elkun
ich habe das mal eben nachvollzogen und folgenden Vorschlag:
Daten markieren -> Spezialfilter (ohne Dublikate) -> Ergebnis kopieren -> in einer neuen Tabelle einfügen (vorhandene Daten können überschrieben werden) -> Filter, alle Datensätze anzeigen)
Damit hast du zwar 2 Tabellen (eine zur Dateneingabe, eine zur Ausgabe), aber mit einem Makro geht das ziemlich schnell.
Das Makro sieht in VBA folgendermaßen aus:
(Die Ranges sind anzupassen!!)
Sub Makro1()
'
' Makro1 Makro
'
Range("A1:A30").Select
Range("A1:A13").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Selection.Copy
Sheets("Tabelle2").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("Tabelle1").Select
Application.CutCopyMode = False
ActiveSheet.ShowAllData
Range("A1").Select
Sheets("Tabelle2").Select
End Sub
Viel Spass beim probieren!
elkun
Antwort 2 von $mooth
Hi elkun....
so in etwa hatte ich mir das auch gedacht. hatte nur das problem, dass ich es in die gleiche tabelle speichern wollte, da ging aber einiges schief, weil er irgendwie die ausgeblendeteten zeilen dennoch mit genommen hat.... naja, wie dem auch sei, hab ich es jetzt in ne neue tabelle und siehe da: es funktioniert....
danke.
so in etwa hatte ich mir das auch gedacht. hatte nur das problem, dass ich es in die gleiche tabelle speichern wollte, da ging aber einiges schief, weil er irgendwie die ausgeblendeteten zeilen dennoch mit genommen hat.... naja, wie dem auch sei, hab ich es jetzt in ne neue tabelle und siehe da: es funktioniert....
danke.
Antwort 3 von nighty
hi elkun :)
hab da was fuer dich :)
somit fast keine selection mehr von noeten ist :)
gruss nighty
Sub Makro1()
With Worksheets("Tabelle2")
rem achte hier auf den vorgestellten punkt
rem befehl ohne punkt bezug auf die aktive tabelle
rem befehl mit punkt bezug auf Tabelle2,wie oben angegeben ist :)
rem bei diesem beispiel wird von der aktiven tabelle die zelle B1 angewaehlt und dessen inhalt nach der tabelle2 ,hier auch B2 gefuellt.
.Cells(1, 2) = Cells(1, 2)
End With
End Sub
hab da was fuer dich :)
somit fast keine selection mehr von noeten ist :)
gruss nighty
Sub Makro1()
With Worksheets("Tabelle2")
rem achte hier auf den vorgestellten punkt
rem befehl ohne punkt bezug auf die aktive tabelle
rem befehl mit punkt bezug auf Tabelle2,wie oben angegeben ist :)
rem bei diesem beispiel wird von der aktiven tabelle die zelle B1 angewaehlt und dessen inhalt nach der tabelle2 ,hier auch B2 gefuellt.
.Cells(1, 2) = Cells(1, 2)
End With
End Sub

