Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
496to500
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
496to500
496to500
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Doppelte beim Kopieren vermeiden

Doppelte beim Kopieren vermeiden
09.10.2004 19:15:07
Frank
Hallo Gemeinde,
ich habe da ein Problem.
Mit diesem Makro kopiere ich kompl. Zeilen aus einer Haupttabelle in die folgenden Sheets, je nach dem was in einer bestimmten Spalte steht.

Sub zeilen_kopieren()
Dim ja As String
Dim quellzeile As Long, zielzeile As Long
quellzeile = Sheets("Ges.-Übersicht").Range("O65536").End(xlUp).Row
ja = Sheets(1).Cells(quellzeile, 15)
zielzeile = Sheets(ja).Range("O65536").End(xlUp).Offset(1, 0).Row
Sheets("Ges.-Übersicht").Rows(quellzeile).Copy
Sheets(ja).Select
Rows(zielzeile).Select
Selection.PasteSpecial
Application.CutCopyMode = False
End Sub

Die Haupttabelle ist eine "lebende" Tabelle, d.h. es werden immer wieder Daten eingetragen. Der Makro wird mit Strg + k gestartet und die neuen Einträge (Zeilen) kopiert.
Das Problem ist, dass die alten Einträge natürlich auch immer wieder kopiert werden und so sich zahlreiche Doppelte in den Untertabellen wieder finden.
Wer hat eine Lösung dafür?
Vielen Dank für euere Hilfe!!!
AW: Doppelte beim Kopieren vermeiden
Ulf
Doppler mithilfe des Spezialfilter entfernen.
Ulf
AW: Doppelte beim Kopieren vermeiden
Frank
Danke für den Tip.
Aber irgendwie funktioniert das nicht.
Vielleicht bin ich auch zu blöd dazu.
Gibt es kein Makro, um die Doppler zu vermeiden?
MfG
Frank
AW: Doppelte beim Kopieren vermeiden
Hübi
Hallo Frank,
wenn die Daten in deiner Haupttabelle immer ergänzt werden, könnte ich mir vorstellen, dass vor dem Kopieren im Zielblatt die Daten gelöscht und dann die neuen eingefügt werden.
So gibt es keine Duplikate.
Gruß Hübi
AW: Doppelte beim Kopieren vermeiden
Frank
Hallo Hübi,
leider gibt es 16 Zielblätter, und je nach dem was in der Spalte C in der Haupttabelle steht, wird die Zeile in ein bestimmtes Sheet kopiert.
Es wird immer die letzte Zeile kopiert. Wenn jemand natürlich zwei Zeilen ergänzt und den Makro starten, fehlt eine Zeile. Das ist natürlich auch ein Problem.
Also habe ich zwei Probleme; Das nur die letzte Zeile kopiert wird und durch das mehrmalige Starten des Makros Doppler entstehen können.
Vielleicht hast du eine Lösung für mich. Ich könnte mir vorstellen, wie du geschrieben hast, das durch ein Makro, die Zieltabellen immer wieder gelöscht werden und die ganze Haupttabelle (in Abhängigkeit der Spalte C) kopiert wird.
Leider habe ich von Makros überhaupt keine Ahnung. Der ertse Makro ist hier aus dem Forum.
Danke für deine Hilfe.
MfG
Frank
Anzeige
AW: Doppelte beim Kopieren vermeiden
Hübi
Hi Frank,
mach doch mal eine Beispieldatei, oder nenne mir eine/mehrere Zellen, die eine Eindeutigkeit für den Datensatz erzeugen.
Dein Code muss dann so gestaltet werden, dass vor dem Kopieren überprüft wird, ob in der Zieltabelle in der Zeile über der "zielzeile" schon der gleiche Wert steht, der durch einen vorherigen Kopiervorgang eingetragen wurde. Wenn ja, dann nicht kopieren.
Verstehn?
Gruß Hübi
AW: Doppelte beim Kopieren vermeiden
Frank
Guten Morgen Hübi,
in den Spalten F bis L (Zellen sind verbunden) ist das, was eingetragen wird, immer eindeutig.
Verstanden habe ich deinen Vorschlag, nur umsetzen kann ich ihn nicht.
MfG
Frank
Anzeige
AW: Doppelte beim Kopieren vermeiden
Hübi
Hi Frank,
habe deinen Code so angepasst, dass die Spalten L - F verglichen werden.

Sub zeilen_kopieren()
Dim ja As String, InhaltZiel As String, InhaltQuelle As String
Dim InhaltQuelleGes As String, InhaltZielGes As String
Dim quellzeile As Long, zielzeile As Long
quellzeile = Sheets("Ges.-Übersicht").Range("O65536").End(xlUp).Row
ja = Sheets(1).Cells(quellzeile, 15)
zielzeile = Sheets(ja).Range("O65536").End(xlUp).Offset(1, 0).Row
For i = 6 To 12 ' Hier ggf. die Spalten korrigieren
InhaltZiel = Sheets(ja).Cells(zielzeile - 1, i).Value
InhaltZielGes = InhaltZielGes + InhaltZiel
Next
For i = 6 To 12 ' Hier ggf. die Spalten korrigieren
InhaltQuelle = Sheets("Ges.-Übersicht").Cells(quellzeile, i).Value
InhaltQuelleGes = InhaltQuelleGes + InhaltQuelle
Next
If InhaltQuelleGes = InhaltZielGes Then
MsgBox "Quelle und Ziel sind identisch. Datensatz wird nicht kopiert"
Exit Sub
End If
Sheets("Ges.-Übersicht").Rows(quellzeile).Copy
Sheets(ja).Select
Rows(zielzeile).Select
Selection.PasteSpecial
Application.CutCopyMode = False
End Sub

Stimmt in Quelle und Ziel alles überein, kommt Meldung und Datensatz wird nicht kopiert.
Konnte ich helfen?
Gruß Hübi
Anzeige
AW: Doppelte beim Kopieren vermeiden
Frank
Super!!!
Deine Lösung ist genial!!!
Das Problem mit den Doppelten wäre damit erschlagen.
Leider wird immer noch nur der letzte Datensatz (Zeile) aus der Haupttabelle kopiert.
Kann man das auch ändern?
MfG
Frank
AW: Doppelte beim Kopieren vermeiden
Hübi
Hallo Frank,
ja, so hatte ich dich eigentlich auch verstanden. Dein bisheriges Makro hat ja auch nur immer die letzte Zeile kopiert - aber bei jedem Start mit Strg + k, wodurch Duplikate entstanden ;-).
Dann gib mal eine Ausgangs-Situation z.B. als Datei vor und beschreibe eindeutig was du willst.
Machbar ist fast alles.
Gruß Hübi
AW: Doppelte beim Kopieren vermeiden
Frank
Hallo Hübi,
hier ist die Datei.
https://www.herber.de/bbs/user/11908.zip
In die Haupttabelle werden immer wieder neue Zeilen eingetragen.
Manchmal eine, oder auch zwei. Wenn dann kopiert wird, ist es halt nur die letzte.
Hoffentlich kannst du was machen.
MfG
Frank
Anzeige
AW: Doppelte beim Kopieren vermeiden
Frank
Hi,
die Liste für die Auftragsannahme ist eigentlich aud dieser Liste entstanden;
https://www.herber.de/bbs/user/11918.zip
Hier macht die Teilung der Spalten einen Sinn. In beiden Listen sollen jeweils die Zeilen aus der Ges.-Liste je nach Eintrag in einer bestimmten Spalte in das dazu gehörige Sheet kopiert werden. Nach dem Kopieren sollen sie aber in der Ges.-Liste nicht gelöscht werden.
In den Spalten F - L, bzw. G - L ist es nur auszuschließen, dass die selben Daten eingetragen werden. Da es sich mit hoher Wahrscheinlichkeit immer um einen anderen Text handelt. Bei allen anderen Spalten kann ich das nicht ausschließen.
Dank deines Makros gibt es keine Doppler mehr, nur das Kopieren aller neuen Einträge (nicht nur die letzte Zeile) ist noch ein Problem.
Bei der Liste 'Auftragsannahme' bedeutet x in O es soll die Zeile kopiert werden. Wenn x in P, dann soll die Zeile nicht kopiert werden. Dieses ist aber ja ausgeschlossen, da nur O abgefragt wird.
Ich hoffe, dass ich deine Fragen beantworten konnte.
MfG
Frank
Anzeige
AW: Doppelte beim Kopieren vermeiden
Hübi
Hi Frank,
nach Analyse deiner Mappe mache ich dir folgenden Vorschlag:
1. Ich kann den Code so gestalten, dass immer dann, wenn ein neues Datum in Sp. A eingegeben wird (neuer Datensatz), der vorherige Datensatz in das Blatt des jeweils in Sp. B stehenden Kalkulators eingetragen wird.
2. Der letzte Datensatz muss dann mit Strg + k kopiert werden.
3. Verstehst du die Logik? Wenn nämlich mehrere Datensätze auf einmal kopiert werden sollen (Strg + k) muss vorher abgeprüft werden, welche der vielen Datensätze noch nicht kopiert wurden. Da ist irgend ein Kennzeichen sinnvoll. Zum Beispiel in Sp. T ein k, das nach erfolgter Kopie durch das Makro wieder gelöscht wird (Zelle T? leer - kein Kopieren).
Um Eineindeutigkeit festzustellen, lasse ich vor der Kopie die Einträge Sp. A bis Sp. F überprüfen. Bei Übereinstimmung - keine Kopie.
Welche Lösung willst du 1, 2 oder 3?
Gruß Hübi
Anzeige
AW: Doppelte beim Kopieren vermeiden
Frank
Ich habe mal die Liste mit Daten gefüllt, wie sie in der Realität vorkommen könnten;
https://www.herber.de/bbs/user/11924.zip
Man muss eigentlich dafon ausgehen, das nur in den Spalten F- L nie das gleiche stehen wird.
Mach mal so, wie du das meinst. Bis jetzt hat ja alles wunderbar funtioniert, was du vorgeschlagen hast.
Aber das mit dem Datum macht mich stutzig, siehe Liste (Datei), an einem Tag können ja mehrere Zeilen eingetragen werden.
PS: Kann man nicht einfach immer alles aus dem Sheet Ges.-Übersicht kopieren, bei Betätigung von Strg+k. Doppler werden doch durch den von dir geänderten Makro vermieden. Oder dauert das zu lange?
MfG
Frank
Anzeige
AW: Doppelte beim Kopieren vermeiden
Hübi
Hi Frank,
heute mache ich nicht weiter. Muss morgen wieder auf Arbeit. Schaue mir aber danach alles noch einmal an.
Noch einmal zum Verständnis: in deiner Mappe sind die Zellen von Sp. F bis L zu einer verbunden. Und da kann meines Erachtens mehrfach das gleiche stehen!?
Das genau ist aber bei Kombination mehrerer Zellinhalte ausgeschlossen.
Habe nochmal schnell die neue Datei angeschaut. Wenn es so sein sollte, dass das Datum als Kopier-Kriterium gelten könnte, wäre zum Tagesabschluss (oder auch zwischendurch) eine Gesamt-Kopie vorstellbar, wenn die Zahl der Datensätze nicht zu groß ist.
Gruß Hübi
Anzeige
AW: Doppelte beim Kopieren vermeiden
Frank
Hallo Hübi,
das hast du falsch verstanden, in den Spalten F-L (zu einer Spalte verbunden) wird nie das selbe stehen. Was man bei den anderen Spalten nicht ausschließen kann.
Es wird höchstens mal vorkommen ,dass an einem Tag vielleicht 10 Einträge in die Liste gemacht werden. 10 Einträge von 10 verschiedenen Kalkulatoren oder 5 Einträge von verschiedenen Kalkulatoren und 5 von einem Kalkulator.
Das Problem ist ja, wenn man nach jeder Eingabe (Jede Zeile) vergißt Strg+k zu drücken, werden die Datensätze nicht kopiert, bzw. nur der letzte Datensatz und die anderen fehlen dann in den einzelen Sheets.
Vielleicht kann man ja folgendes machen; wenn Strg+k gedrückt wird, werden immer nur die letzten 20 Zeilen kopiert. Doppler sollten ja durch den Makro ausgeschlossen sein.
Nur die Meldung, dass der Datensatz schon existiert, sollte dann nicht mehr erscheinen.
Wie findest du das?
Viel Spaß bei der Arbeit!
MfG
Frank
Anzeige
AW: Doppelte beim Kopieren vermeiden
Frank
Hallo Hübi,
deine Makro funktioniert. Super!

Eine tolle Leistung!
Vielen vielen Dank!
MfG
Frank
AW: Doppelte beim Kopieren vermeiden
Hübi
Hi Frank,
das hört man gern.
Gruß Hübi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige