VBA - Kopierte Zeilen überprüfen
#1
Hallo zusammen,

ich nutze aktuell einen Import von einem anderen Workbook.
Dabei sollen in der neuen Datei nur Einträge eingefügt werden, die noch nicht vorhanden sind.

Wichtig dabei sind 3 Spalten zu überprüfen (G, H, i).

Code Import:
Code:
    With ActiveWorkbook.Worksheets(TabellenName).Range("A7:AV50000")
      If Application.WorksheetFunction.CountA(.Columns(4)) = 0 Then Exit Sub
      Application.Intersect(.Columns(4).SpecialCells(xlCellTypeConstants).EntireRow, .Columns).Copy
    End With

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=True, Transpose:=False
Antworten Top
#2
Hallo

die Anfrage war ja schon mal da, mit 50.000 Zeilen! Ich erinnere mich.  Da ist aber noch einiges unklar ....

Heisst es konkret, das nur die Zeilen kopiert werden sollen wo in den Spalten G,H,I  ein Wert drin steht?  Ist das ein bestimmter Wert, der vorher gefiltert werden muss??  Oder xbeliebige Werte?  Nur in einer Spalte, jede für sich, oder müssen immer alle drei Spalten ausgefüllt sein? 

Da gab es schon mal eine Lösung mit einer For Next Schleife.  Oder man könnte vor dem kopieren per Autofilter die drei Spalten filtern.

mfg Gast 123
Antworten Top
#3
Hi

Versuche es so.
Ich gehe mal davon aus das du die Daten erst mal unter den alten einfügst. 
Als nächstes nutzt du jetzt einfach die Funktion(Duplikate Entfernen) und als Ref.Spalten nimmst du G/H/I.

Gruß Elex
Antworten Top
#4
Nachtrag   oder muss jeder einzene Datensatz vor dem kopieren mit der Zieltabelle in G,H,I verglichen werden??
Antworten Top
#5
Hallo, danke für die Antworten.

Also es können ruhig alle Spalten übernommen werden, habe eine andere Lösung für das Problem gefunden.

Aber jetzt geht es drum dass aus der Datei, woraus die Daten importiert werden können, schon bereits in der Masterdatei (wo alle importierten Daten zusammen kommen) sind.
Heißt ich benötige einen Check um zu schauen, ob dieser Datensatz bereits in der Masterdatei vorhanden ist.
Ob der Datensatz in der Masterdatei vorhanden ist erkenne ich an den oben beschriebenen 3 Spalten (G,H,I).

Heißt ich überprüfe ob die Daten in der Importdatei in den Spalten GHI bereits in einer Zeile in der Masterdatei sind.

Beispiel:

G - H - I
Importdatei (nicht in Masterdatei übernehmen): 11 - VornameX, Nachname - Alter
Importdatei (in Masterdatei übernehmen): 11 - VornameY, Nachname - Alter
Masterdatei: 12 - VornameX, Nachname - Alter

Heißt nur wenn die Inhalte aus allen 3 Spalten genau gleich sind, sollen die Daten nicht übernommen werden.

(01.02.2022, 13:00)Elex schrieb: Hi

Versuche es so.
Ich gehe mal davon aus das du die Daten erst mal unter den alten einfügst. 
Als nächstes nutzt du jetzt einfach die Funktion(Duplikate Entfernen) und als Ref.Spalten nimmst du G/H/I.

Gruß Elex

Klingt nach einer interessanten Lösung und das könnte gut klappen - versuche ich gerade einzubauen und zu testen!

Danke für die Idee.
Antworten Top
#6
(01.02.2022, 13:00)Elex schrieb: Hi

Versuche es so.
Ich gehe mal davon aus das du die Daten erst mal unter den alten einfügst. 
Als nächstes nutzt du jetzt einfach die Funktion(Duplikate Entfernen) und als Ref.Spalten nimmst du G/H/I.

Gruß Elex

Hallo Elex, deine Lösung klappt super.

Allerdings habe ich dadurch in der Tabelle einfach leere Zeilen.
Wie kann ich die leeren Zeilen löschen? Habe es mit einer For-Schleife probiert, aber die Performance ist unglaublich schlecht, selbst bei geringen Datenmengen.

Code:
    'Duplikate entfernen
    Columns("A:Z").Select
    ActiveSheet.Range(Cells(6, 1), Cells(ImportRow, 48)).RemoveDuplicates Columns:=Array(7,8,9), _
        Header:=xlNo
Antworten Top
#7
Hallo Korain,

was spricht dagegen, dass Du Dir noch einmal Deinen alten Beitrag anschaust? ==> https://www.clever-excel-forum.de/Thread...Leerzeilen
Dort haben Dir Kuwer, Gast123 und snb einige Vorschläge dazu gemacht ohne dien Nutzung von Schleifen. - Das sollte Dir eigentlich weiterhelfen.

Grüße

Norbert
Antworten Top
#8
Zitat:Hallo Elex, deine Lösung klappt super.

Allerdings habe ich dadurch in der Tabelle einfach leere Zeilen.
Eigentlich nicht.
evtl. Bsp. Datei 

Gruß Elex
Antworten Top
#9
(01.02.2022, 15:13)Elex schrieb: Eigentlich nicht.
evtl. Bsp. Datei 

Gruß Elex
Hallo Elex,
in der Datei sind leider überall Firmendaten.

Also der Code oben mit dem Duplikate entfernen klappt super und zuverlässig.
Jedoch nachdem die Duplikate entfernt wurden, bleiben Leerzeilen über, zb. muss normal in Spalte B immer ein Wert stehen, der ist aber dort entsprechend nach dem Duplikate entfernen nicht mehr vorhanden.

Ich hatte es mit einer For-Schleife versucht, aber das dauert unglaublich lange und kann ich daher nicht nutzen.
Code dazu:
Code:
    'Zeilen der Duplikate entfernen
    For deleterow = 6 To ImportRow
        If ActiveSheet.Range(Cells(deleterow, 2), Cells(deleterow, 2)).Value = "" Then
            ActiveSheet.Rows(deleterow & ":" & deleterow).Select
            Rows(ActiveCell.Row).EntireRow.Delete
        End If
    Next deleterow





(01.02.2022, 15:03)NobX schrieb: Hallo Korain,

was spricht dagegen, dass Du Dir noch einmal Deinen alten Beitrag anschaust? ==> https://www.clever-excel-forum.de/Thread...Leerzeilen
Dort haben Dir Kuwer, Gast123 und snb einige Vorschläge dazu gemacht ohne dien Nutzung von Schleifen. - Das sollte Dir eigentlich weiterhelfen.

Grüße

Norbert

Hallo Norbert,
die Lösung ist nicht für das aktuelle Problem gedacht. Hierbei geht es jetzt um Duplikate.
Antworten Top
#10
Hi

so kann man das nicht nachvollziehen. Hier liegt ein Anwendungs- oder Verständnis Problem zugrunde.
Ein Bsp.Datei ist in zwei Minuten mit neutralen Daten gemacht.

Gruß Elex
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste