Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1584to1588
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
Kopieren ohne Duplikate
26.10.2017 11:02:56
r2d2
Hallo,
folgenden Code habe ich hier gefunden:
Sub Werte_ohne_Redundanzen_Kopieren()
'Kopiert alle Werte der Spalte B EINMALIG nach Spalte C - ohne Redundanzen
'24.11.2011, NoNet - www.excelei.de
Dim lngZQ As Long, lngZZ As Long 'Zeilen-Variablen für Quelle/Ziel
Dim lngSQ As Long, lngSZ As Long 'Spalten-Variablen für Quelle/Ziel
lngSQ = 2 'Werte aus Quell-Spalte 2 = Spalte B
lngSZ = 3 'Werte nach Ziel-Spalte 3 = Spalte C
Columns(lngSZ).ClearContents 'Zielspalte zuvor löschen !
For lngZQ = 2 To Cells(Rows.Count, lngSQ).End(xlUp).Row
'Per ZÄHLENWENN() prüfen, ob Wert bereits in ZIEL-Spalte vorhanden ist :
If Application.CountIf(Columns(lngSZ), Cells(lngZQ, lngSQ)) = 0 Then
'Wenn der Wert noch NICHT in der ZIEL-Spalte vorhanden ist :
lngZZ = Cells(Rows.Count, lngSZ).End(xlUp).Row + 1
Cells(lngZZ, lngSZ) = Cells(lngZQ, lngSQ)
End If
Next
End Sub

Nun möchte ich aber die Anzahl der Zeilen eingrenzen. In dem o.a. Beispiel wird ja die gesamte Spalte B der Quelle (also von Zeile 1 bis unendlich) und die gesamte Spalte C im Ziel verwendet.
Ich möchte jetzt z.B., daß nur von B10:B100 in der Quelle und von C12 bis C66 im Ziel verwendet wird.
Außerdem bleiben bei dem o.a. Code Leerzellen im Ziel ungefüllt, da ja von unten nach oben die nächste freie Zelle verwendet wird - geht das auch anders?
Ich bekomme die Änderung nicht hin...
Kan mir jemand bitte helfen?
Danke und Gruß
r2d2

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beispielmappe bitte
26.10.2017 11:33:30
Werner
Hallo,
wie kommst du auf diese Aussage?
In dem o.a. Beispiel wird ja die gesamte Spalte B der Quelle (also von Zeile 1 bis unendlich)
Diese Codezeile
For lngZQ = 2 To Cells(Rows.Count, lngSQ).End(xlUp).Row

bedeutet, dass die Schleife in der Quelle von Zeile 2 bis zur letzten befüllten Zelle in der Spalte läuft und nicht bis unendlich.
Wenn die letzte belegte Zelle (diese wird in der Spalte von unten nach oben ermittelt) in Zeile 100 liegt, dann läuft die Schleife bis 100. Ist die letzte belegte Zelle in Zeile 50, dann läuft die Schleife bis 50.
Bezüglich dieser Aussage
Außerdem bleiben bei dem o.a. Code Leerzellen im Ziel ungefüllt, da ja von unten nach oben die nächste freie Zelle verwendet wird - geht das auch anders?

vermute ich mal, dass in deiner Zielspalte die Daten lückenhaft (mit Leerzellen dazwischen) vorhanden sind, die du dann auffüllen möchtest. Dazu müsste dann die freie Zelle von oben nach unten ermittelt werden.
Am besten wäre es, wenn du mal eine Datei mit ein paar Beispieldaten hier hochladen würdest, die dem Aufbau deiner Originaldatei entspricht. In der Datei dann bitte noch aufzeigen, wie dein Wunschergebnis aussehen würde.
Gruß Werner
Anzeige
AW: Beispielmappe bitte
26.10.2017 11:43:21
r2d2
Ja ne iss klar, es wird natürlich in der Quelle nur bis zur letzten befüllten Zelle gegangen.
Ich möchte das aber dennoch einschränken, dmit nicht irgendein Fliegenschiss in Zeile 12588 die Verarbeitung unnötig verlangsamt.
Und ja, im Ziel könnten Lücken entstehen - ok, könnte man durch Sortierung lösen.
Aber anders wärs mir lieber, wenn von Oben (also z.B. von C12 startend) die nächste freie Zelle
befüllt wird (nachdem auf doppelte geprüft wurde).
Gruß r2d2
AW: Hier eine Beispielmappe
26.10.2017 17:40:42
Werner
Hallo,
die Beispieldatei hat jetzt aber nicht mehr viel mit deiner Beschreibung gemeinsam.
Laut Beschreibung: Quellbereich B10 bis B100, Zielbereich C12 bis C66
in der Datei: Quellbereich B2 bis B22, Zielbereich H2 bis H31
Na ja, auf alle Fälle deine Beispielmappe zurück.
https://www.herber.de/bbs/user/117244.xlsm
Gruß Werner
Anzeige
AW: Hier eine Beispielmappe
27.10.2017 07:16:23
r2d2
Danke dafür.
Jetzt ist das ganze aber so komplex - da brauche ich eine Weile um das ganze zu durchdringen.
Außerdem sind Quellbereich und Zielbereich in unterschiedlichen Tabellenblättern.
Ob ich das selber hinnbekomme? ...
Gruß r2d2
aktualisierte Beispielmappe
27.10.2017 10:17:54
r2d2
Ok, hier meine angepasste Beispielmappe:
https://www.herber.de/bbs/user/117252.xlsm
Das mit der Aufteilung in verschiedene Arbeitsblätter habe ich soweit hinnbekommen.
Nun möchte ich, daß der Zielbereich nicht wie in der Beispieltabelle ab Zeile 2 anfängt
sondern z.B. erst ab Zeile 10.
Der Zielbereich währe dann also z.B.: sheets("ziel").range("C10:D28")
Und jetzt kommt noch eine Sache die ich benötige:
Es sollen zwei Spalten kopiert werden (von quelle = Spalte B+C nach ziel = Spalte C+D) aber nur die erste Spalte (also quelle = Spalte B) wird auf doppelte Einträge geprüft.
Danke und Gruß
r2d2
Anzeige
AW: Hier eine Beispielmappe
27.10.2017 11:10:43
r2d2
Ok, hier meine angepasste Beispielmappe:
https://www.herber.de/bbs/user/117252.xlsm
Das mit der Aufteilung in verschiedene Arbeitsblätter habe ich soweit hinnbekommen.
Nun möchte ich, daß der Zielbereich nicht wie in der Beispieltabelle ab Zeile 2 anfängt
sondern z.B. erst ab Zeile 10.
Der Zielbereich währe dann also z.B.: sheets("ziel").range("C10:D28")
Und jetzt kommt noch eine Sache die ich benötige:
Es sollen zwei Spalten kopiert werden (von quelle = Spalte B+C nach ziel = Spalte C+D) aber nur die erste Spalte (also quelle = Spalte B) wird auf doppelte Einträge geprüft.
Danke und Gruß
r2d2
Anzeige
AW: Hier eine Beispielmappe
27.10.2017 13:15:56
Werner
Hallo,
hier deine Mappe.
Wobei jetzt erneut die Beschreibung bezüglich des Zielbereiches im neuen Beitrag von der Beispielmappe abweicht, da war es Zeile 12, in der Beispielmappe Zeile 10.
https://www.herber.de/bbs/user/117258.xlsm
Gruß Werner
AW: Hier eine Beispielmappe
30.10.2017 09:04:15
r2d2
Hallo Werner,
vielen Dank!
Leider habe ich da doch noch etwas vergessen.... es können ggf. auch mehr Spalten zu kopieren sein.
Außerdem soll das ganze über eine Tabelle gesteuert werden (Blatt control).
Hier die nochmal angepasste Datei: https://www.herber.de/bbs/user/117293.xlsm
Die Variablen habe ich ein wenig "sprechender" benannt. Bitte so lassen - DANKE!
Gruß r2d2
Anzeige
AW: Hier eine Beispielmappe
01.11.2017 06:56:41
Rolf.dW
Hallo r2d2,
vorab möchte ich Werner meine Anerkennung für seine Geduld aussprechen. Einmal nachkaspern ist ja OK, aber dann muss auch gut sein. Beim Lesen deines letzten Beitrags (30.10.2017) war ich kurz vor knapp, meinen Lösungsvorschlag in die Tonne zu kloppen.
Nachdem ich eine Nacht darüber verschlafen habe, denke ich, dass ich dir dennoch meine Version (Copy Spalte B:D) zumindest als Anregung zukommen lassen sollte. Ist sicherlich nicht das Gelbe vom Ei, aber zumindest ein Anfang.
https://www.herber.de/bbs/user/117335.xlsm
Zu meinem Makro (CopyEinzelwerte) noch folgende Hinweise:
• Ich habe der Einfachheit halber mein Makro deinem Button "Copy" zugeordnet. Dein Makro ist zwar noch vorhanden, aber derzeit "außer Betrieb".
• Ich verwende gerne Bereichsnamen. Im beigefügten Makro habe ich z.B. der Zelle B2 im Blatt "quelle" den Namen keyQ verpasst. Welchen inneren Nährwert das haben soll? Ganz einfach. Du kannst nachträglich Spalten links davon und/oder Zeilen darüber beliebig einfügen/löschen, ohne dass das Makro vor die Wand läuft, weil du z.B. vergessen hast den absoluten Zellbezug von B2 auf C2 zu ändern.
• Mein Makro gliedert sich in drei Schritte
a) Alte Daten in Tabelle ZIEL löschen
b) Quelldaten nach Tabelle ZIEL kopieren
c) Duplikate entfernen
d) Leerzeilen in Tabelle ZIEL löschen
e) Tabelle ZIEL neu formatieren (Hintergrundfarbe, Rahmen)
Gruß, Rolf
P.S. Niemand hier im Forum reißt dir den Kopf ab, wenn du dich mit deinem Vornamen statt deines Pseudonyms verabschiedest.
Anzeige
AW: Hier eine Beispielmappe
01.11.2017 07:35:22
r2d2
Hallo Rolf,
vielen Dank für deine Lösung.
Wieso ist mehrmaliges "Nachkaspern" denn so schlim?
Natürlich bin ich bemüht, möglichst viel selber zu lösen und mir nur bei den "Teilen" helfen
zu lassen, wo ich nicht weiterkomme.
Hier hat sich leider herausgestellt, daß ich an meine Grenzen stoße und selbst leider
nicht so weit gekommen bin wie ich mir das gewünscht hätte.
Dennoch währe ich dankbar, wenn mir bezogen auf meinen aktuellen Stand weitergeholfen werden
könnte und nicht neue Lösungsansätze (erst alle Daten kopieren und danach doppelte löschen)
gemacht würden.
Eigentlich bin ich ja schon so gut wie im Ziel.
Es fehlen nur noch 2 Dinge, die ich nach mehrstündigen Probieren leider nicht hinnbekommen habe:
1. Wie kann ich es bewerkstelligen, daß der Zielbereich z.B. erst ab Zeile 10 (oder 15 oder ...) beginnt?
2. Wie kann ich mehr als 2 (hintereinander befindliche) Spalten (3 oder 4 oder ...) von Quelle nach Ziel kopieren?
Wenn Werner hier nochmal helfen könnte währe ich dankbar.
Gruß, r2d2
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige