![]() |
(VB[A]) Doppelte Teileinträge markieren/aussortieren lassen Hallo hallo, also ich fang gleich mal an, es geht um folgendes: Ich hab ne Excel liste mit ca 6.000 Einträgen die wie folgt angeordnet sind: User Name: Full Name: xxx1xx Gerd Schmidt xxx2xx Hans Peter Müller xxx3xx Harald Junke xxx1xx Gerd Schmidt so eben, hoffe das is halbwegs verständlich. Da ich nun absolut NULL Bock hab, 6.000 Einträge von Hand nach irgendwelchen doppeltem ******* da durchzusuchen brauch ich da nen kleinen Trick. Ich habs mal in "Programmiersprachen" reingetan, da ich denke dass man hier VBA oder sowas braucht (womit ich mich nich sonderlich gut auskenne^^) Wäre echt dufte wenn mir da einer helfen könnte, gibt ne gute Bewertung wer mir ne passende Lösung liefert (als kleinen Ansporn sozusagen ;)) Gruß bigfoot996 |
AW: (VB[A]) Doppelte Teileinträge markieren/aussortieren lassen Hi, ich gehe mal davon aus, dass in deinem Beispiel die Zeile von Gerd Schimdt gelöscht werden soll, oder? Im Office 2007 gibt dafür es im Ribbon "Daten" einen Eintrag "Duplikate entfernen". Vielleicht funzt das (da müssen aber meiner Ansicht nach beide Zeilen absolut identisch sein). Ansonsten vielleicht nach Name sortieren und dann die jeweilig zu vielen Zeilen löschen, wenn ich Zeit hätte könnte ich dir ein Makro basteln (evtl. später heute oder morgen). Oder du bekommst es selbst hin. |
AW: (VB[A]) Doppelte Teileinträge markieren/aussortieren lassen [quote='[EID]-Mr.GiZMO;551746']Hi, ich gehe mal davon aus, dass in deinem Beispiel die Zeile von Gerd Schimdt gelöscht werden soll, oder? Im Office 2007 gibt dafür es im Ribbon "Daten" einen Eintrag "Duplikate entfernen". Vielleicht funzt das (da müssen aber meiner Ansicht nach beide Zeilen absolut identisch sein). Ansonsten vielleicht nach Name sortieren und dann die jeweilig zu vielen Zeilen löschen, wenn ich Zeit hätte könnte ich dir ein Makro basteln (evtl. später heute oder morgen). Oder du bekommst es selbst hin.[/quote] Moin Gizmo, joa stimmt, zumindest teilweise. Wenn es irgendwie gehen sollte würd ich die doppelten Einträge nur irgendwie markieren lassen - in einer Farbe zum Beispiel oder Fett gedruckt etc. Leider benutzen wir hier im Geschäft noch Office 2003 (Großbetrieb, da mal eben kurz ne viertel Millionen office Lizenzen updaten zahlt man nich mal so eben aus der Portokasse ;)). Nach Name sortiert hab ich bereits, aber da wird man ja doof wenn man über 6k Einträge "von Hand" durchsuchen und markieren muss, das ist ja gerade das was ich nicht will *g* An Makro hab ich auch schon gedacht und bin auch schon fleißig am probieren. Wie gesagt ich hab keine Ahnung von VBA, wenn du auf dem Gebiet vllt. schon etwas erfahrener bist als ich wär ich dir sehr dankbar wenn du da möglicherweise sowas zusammenschustern könntest wenns dir nicht allzuviel Umstände bereitet. Gruß biggi |
AW: (VB[A]) Doppelte Teileinträge markieren/aussortieren lassen Ich hab was gecodet! Vorraussetung: - Spalte 1 - Nr oder so - Spalte 2 - Name Das tut das Makro: - Zählt Anzahl der Zeilen (also hier Datensätze) - sortiert nach Name (Spalte 2) - schaut von unten nach oben (musste ich jetzt auf die Schnelle so coden) nach gleichen Namen in zwei übereinanderstehenden Zeilen - löscht die untere - funktioniert auch bei 3, 4, 5... gleichen Namen - behalten wird sortiertechnisch die Zeile mit der kleinsten Zahl in Spalte 1 - am Ende wieder nach Spalte 1 sortiert Et voila: [code] ' ANZAHL ZEILEN LESEN Function Zeilenzahl() As Integer Range("A1").Select Zeilenzahl = Selection.CurrentRegion.Rows.Count End Function Sub Dupletten_loeschen() ' ' Dupletten_loeschen Makro ' ' SORTIEREN ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add Key:=Range("B1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Tabelle1").Sort .SetRange Range("A1:B" & Zeilenzahl()) .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ' VON UNTEN NACH OBERN DUPLETTEN LÖSCHEN Dim i As Integer For i = (Zeilenzahl() - 1) To 2 Step -1 If Worksheets("Tabelle1").Cells(i - 1, 2) = Worksheets("Tabelle1").Cells(i, 2) Then Selection.Rows(i).EntireRow.Delete Next i ' WIEDER NACH NUMMER SORTIEREN ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add Key:=Range("A1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Tabelle1").Sort .SetRange Range("A1:B" & Zeilenzahl()) .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub [/code]Einfach per Alt+F11 VB öffnen und in ein Modul deiner Wahl packen. Bei gewünschten Korrekturen, bitte melden. So, back to work ;) |
AW: (VB[A]) Doppelte Teileinträge markieren/aussortieren lassen Hey erstmal vielen Dank Gizmo für die Arbeit die du dir machst! Echt Spitze! Jedoch klappt das ganze leider nich so, oder ich bin einfach unbegabt was vba anbelangt xD [URL="http://www.tweakpc.de/forum/vbimghost.php?do=displayimg&imgid=660"][IMG]http://www.tweakpc.de/forum/imagehosting/thum_706048315379c8a8c.jpg[/IMG][/URL] Mach ich irgendwas falsch oder wie? Geht das auch dass man Doppelte Einträge farblich hervorheben kann anstatt sie gleich zu löschen oder is das irgendwie zu aufwendig? Gruß biggi EDIT: Mist....wenn dann sollte man den Namen der Datei auch schon überall rausschneiden....ach jw, sagt sowieso nix aus ;) EDIT2: Google'n hilft...[URL="http://www.online-excel.de/excel/singsel.php?f=6"]*klick*[/URL] Jedoch sagt der mir dann dass nichts doppelt wäre....jetzt is nur die Frage ob das stimmt oder ob das Teil einfach nich richtig arbeitet in meiner Tabelle^^ EDIT3: Anfangs dachte ich es war eine schlechte Idee folgendes gefrickel durchrattern zu lassen, aber nach ca genau 45 Mins bearbeitungszeit hat es quasi ein perfektes Resultat geliefert: [code]Option Explicit Sub Daten_vergleichen_über_2_Spalten() Dim Suchname As String, letzte_Zeile_Bereich As Long, _ Wiederholungen As Long, Addresse As String, Zeilenwiederholungen As Long, _ letzte_Zeile_Spalte_A As Long, Spaltenwiederholung As Integer Application.ScreenUpdating = False letzte_Zeile_Spalte_A = Range("A65536").End(xlUp).Row letzte_Zeile_Bereich = ActiveSheet.UsedRange.Rows.Count For Wiederholungen = 2 To letzte_Zeile_Spalte_A Suchname = Cells(Wiederholungen, 1) For Zeilenwiederholungen = 2 To letzte_Zeile_Bereich If Cells(Zeilenwiederholungen, Spaltenwiederholung) = Suchname Then Cells(Wiederholungen, 1).Interior.ColorIndex = 4 Cells(Zeilenwiederholungen, Spaltenwiederholung).Interior.ColorIndex = 4 End If Next Next Next End Sub[/code] Problem gelöst, dachte nich dass ich es doch noch irgendwie hinbekomm ;) Vielen dank an Gizmo für die Hilfe, hat zwar nich ganz funktioniert aber deine Bewertung bekommste trotzdem *g* |
| Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 Uhr. |
Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.