Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1076to1080
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

Abgleichung Datensätze-Mehrfachnennungen vermeiden

Abgleichung Datensätze-Mehrfachnennungen vermeiden
27.05.2009 12:11:09
pbaer007
Hallo an die Excel & VBA Profis,
ich habe eine Liste (über 100.000 Zeilen) die als Gesamtdatensatz (aus einem anderen Programm) in Excel reinkopiert wird. Dies wird mit einem Makro gemacht, welches unter anderem eine Überprüfung durchführt, ob Länder bereits in einer weiteren Tabelle enthalten sind. Wenn nicht, wird das entsprechende Land dort angefügt.
Nun kommen im Import z.Bsp. "Schweiz" mehrfach vor. Folglich wird auch jedesmal von neuem geprüft, ob die "Schweiz" bereits in der zweiten Liste enthalten ist. Was ja nicht mehr nötig ist, wenn einmal die Prüfung gelaufen ist.
Aus diesem Grund suche ich nach einer Lösung nur die Erstnennung aus Spalte "Q" in die Spalte "R" zu kopieren. Kleines Zusatzproblem: Es sind Leerzellen (in "Q") dazwischen, diese müssen auch bleiben.
Hat jemand eine Idee dazu?
Schon einmal vielen Dank
Gert

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abgleichung Datensätze-Mehrfachnennungen vermeiden
27.05.2009 12:43:35
Tino
Hallo,
verwende doch den Spezialfilter und aktiviere keine Duplikate.
Automatisiert kannst Du dies auch mit dem Makrorekorder aufzeichne.
Gruß Tino
AW: Abgleichung Datensätze-Mehrfachnennungen vermeiden
27.05.2009 15:31:36
pbaer007
Hallo Tino,
vielen Dank für den Tip, aber das haut nicht wirklich hin. Das hackt aber bei über 100.000 Zeilen (dauert extrem lang). Gibt es evtl. noch eine andere Lösung?
Sorry
Gert
AW: Abgleichung Datensätze-Mehrfachnennungen vermeiden
27.05.2009 15:49:35
Daniel
Hi
100.000 Datensätze ist natürlich schon ne Menge
ich würde es mal so probieren:
(ich gehe mal davon aus, daß Spalte R erstmal frei ist)

Sub test()
Dim rngQ As Range, rngR As Range
Dim arrQ, arrR
Dim zeQ As Long, zeR As Long
Set rngQ = Intersect(ActiveSheet.UsedRange, Range("Q:Q"))
Set rngR = rngQ.Offset(0, 1)
arrR = rngR.Value
'Reihenfolge sichern
rngR.FormulaR1C1 = "=Row()"
rngR.Formula = rngR.Value
'Sortieren
rngQ.CurrentRegion.Sort key1:=rngQ.Cells(1, 1), order1:=xlAscending, header:=xlYes
'--- Länder ermitteln
arrQ = rngQ.Value
zeR = 1
arrR(1, 1) = "Länderliste"
For zeQ = 2 To UBound(arrQ, 1)
If arrQ(zeQ, 1)  arrQ(zeQ - 1, 1) Then
zeR = zeR + 1
arrR(zeR, 1) = arrQ(zeQ, 1)
End If
Next
'--- zurücksortieren
rngR.CurrentRegion.Sort key1:=rngR.Cells(1, 1), order1:=xlAscending, header:=xlYes
'--- Daten zurückschreiben
rngR.Value = arrR
End Sub


Gruß, Daniel

Anzeige
AW: Abgleichung Datensätze-Mehrfachnennungen vermeiden
27.05.2009 16:11:39
pbaer007
Hallo Daniel,
schon einmal Danke für den Code.
Werde mal mein Glück versuchen.....
VG
Gert
AW: Abgleichung Datensätze-Mehrfachnennungen vermeiden
27.05.2009 17:39:33
pbaer007
SUPER !!!!!!!!
ES FUNKTIONIERT !!!!!!!
(Nur schade, dass ich nicht verstehe, was ich da lese.)
Aber wirklich super vielen, vielen Dank
VG
Gert
AW: freut mich, daß es funktioniert
27.05.2009 17:57:05
Daniel
Hi
was verstehst du daran nicht?
ist nicht komplexer als der Code, der bei deimen Beispiel dabei ist.
Eine Schleife, eine IF-Abfrage, mehr ist nicht.
wenns sein muss, extrahier ich dir die Daten auch ohne Makro in 2-3 Minuten
Gruß, Daniel
AW: freut mich, daß es funktioniert
28.05.2009 09:57:33
pbaer007
Hi Daniel,
naja, sagen wir verstehen in Sachen was macht was. Mir fehlen noch so einige Kenntnisse betreffend der Programmierung. Und so sind mir nicht alle Codes bekannt, aber man wächst ja mit den Herausforderungen......
Auf jeden Fall nochmals vielen Dank für die Lösung.
Grüße
Gert
Anzeige
war gestern nicht mehr online...
28.05.2009 07:55:48
Tino
Hallo,
, hier eine Version um doppelte aus einer sehr großen Liste zu löschen,
sollte recht schnell sein.
Hier wird die Spalte Q gefiltert nach Spalte R.
Sub Liste_Ohne_Doppelt()
Dim myAr
Dim Dic As Object
Dim A As Long
Set Dic = CreateObject("Scripting.Dictionary")

'Tabellenname anpassen 
With Sheets("Tabelle1")
    'Komplette Spalte Q 
    myAr = .Range("Q1", IIf(IsEmpty(.Cells(.Rows.Count, 17)), .Cells(.Rows.Count, 17).End(xlUp), .Cells(.Rows.Count, 17)))
    
    'Liste erstellen ohne doppelte 
    For A = 1 To Ubound(myAr)
     If myAr(A, 1) <> "" Then
        Dic(myAr(A, 1)) = 0
     End If
    Next A
    
    'Daten ab Zelle R1 einfügen 
    .Range("R1").Resize(Dic.Count) = Application.Transpose(Dic.keys)
End With
End Sub


Gruß Tino

Anzeige
AW: war gestern nicht mehr online...
28.05.2009 10:02:05
pbaer007
Hi Tino,
vielen Dank für deine Lösung.
Hatte zwischenzeitlich eine ähnliche Lösung erhalten.
Aber vielen, vielen Dank für die Unterstützung.
Grüße
Gert
AW: Abgleichung Datensätze-Mehrfachnennungen vermeiden
27.05.2009 13:00:58
Rudi
Hallo,
ich verstehe das nicht. Dann musst du doch R überprüfen.
Gruß
Rudi
AW: Abgleichung Datensätze-Mehrfachnennungen vermeiden
27.05.2009 13:49:45
pbaer007
Hallo Rudi,
ja so soll es sein, aber ich möchte beim Rüberkopieren in die Spalte R, nur jeweils einmal das Land haben.
Beispiel:
Q5, Q17, Q35, Q88, Q.. beinhalten "Schweiz"
für den späteren Abgleich sollte dann nur
Q5 in R5 übertragen werden, die restlichen sollen dann nicht mit rüber kommen.
Hoffe das ich mich einigermaßen verständlich ausdrücke?
Güße
Gert
Anzeige
AW: Abgleichung Datensätze-Mehrfachnennungen vermeiden
27.05.2009 16:00:20
pbaer007
Nochmals Hallo,
habe den File mal "angehängt".
https://www.herber.de/bbs/user/62079.xls
1. Die Daten werden auf die "temporary"-Seite kopiert
2. Dort werden dann alle nicht benötigen telefonate gelöscht
3. Dann werden die Länder ausgelesen und in Q geschrieben
4. nun erfolgt eine Abstimmung ob, das jeweilige Land bereits in der Liste
auf der "Consolidation" enthalten ist, wenn nicht wird es dort unten angeführt
> und das dauert bei 100.000 Zeilen mehr als 40 Min. 5. Die Summenformeln pro Land werden eingesetzt, die sich aus allen Einzelposten
der Länder zusammenstzen
6. noch etwas Schnörkel, das Auge sieht ja zu und fertig (oder so).
Es geht also um Punkt 4:
ich kann die Zeilen nicht ganz löschen da ich zwar nicht alle Mehrfachnennungen der Länder zur
Kontrolle benötige, aber eben alle Einzelbeträge der Spalten F und J für die jeweiligen Summen
Ich hoffe das verdeutlicht das Problemchen.
Die Lösung mit dem Filter habe ich nicht zum Laufen bekommen.
Nochmals vielen Dank
Gert
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige