Computer Hardware Forum - TweakPC

Computer Hardware Forum - TweakPC (https://www.tweakpc.de/forum/)
-   Programmiersprachen (https://www.tweakpc.de/forum/programmiersprachen/)
-   -   (VB[A]) Doppelte Teileinträge markieren/aussortieren lassen (https://www.tweakpc.de/forum/programmiersprachen/56721-vb-doppelte-teileintraege-markieren-aussortieren-lassen.html)

bigfoot996 19.05.2008 09:41

(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

[EID]-Mr.GiZMO 19.05.2008 10:00

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.

bigfoot996 19.05.2008 10:20

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

[EID]-Mr.GiZMO 19.05.2008 10:59

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 ;)

bigfoot996 19.05.2008 11:19

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.