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

Kopieren immer nur bis zum nächsten Eintrag...

Kopieren immer nur bis zum nächsten Eintrag...
31.10.2006 18:13:31
Isolde
Liebe Excel-Zauberer und VBA-Künstler,
ich stell’ mich heute wieder ausgesprochen doof an bei folgendem Problem:
habe ein Arbeitsblatt mit Spalten A bis K bzw. stehen in Zeile 1 die Spaltenüberschriften.
In Zelle A2 habe ich eine Kontonr. stehen, die Zelle I2 ist leer.
Nun folgen in den Zellen A3 bis An Texte, die ich nicht gebrauchen kann, in den entsprechenden Zellen I3 bis In stehen Texte, die dort verbleiben sollen/können.
In Zelle An plus 1 folgt nun eine neue Kontonr. (in dieser Zeile ist die Zelle I wieder leer), wieder folgen diverse Zeilen, bei denen in Zelle An unbrauchbarer Text steht usw.
Nun möchte ich aber jene Kontonummern in Spalte A immer soweit „runterkopieren“, bis die nächste Kontonr. kommt; diese ist dann wieder in die darunter liegenden Zellen der Spalte A „runterzukopieren“, bis die nächste Kontonummer kommt etcetc.
Um mein Problem zu veranschaulichen hänge ich 2 Muster an: Zustand jetzt und Zustand ideal.
Wer von euch führt mich dahin?
Hoffe darauf, daß es mit einer Formel lösbar ist, aber VBA-Code wäre auch ok...
Vielen Dank für jedwede Hilfe vorab!
LG, Isolde
https://www.herber.de/bbs/user/37811.xls

Die Datei https://www.herber.de/bbs/user/37812.xls wurde aus Datenschutzgründen gelöscht

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren immer nur bis zum nächsten Eintrag...
31.10.2006 18:43:04
IngGi
Hallo Isolde,
wenn ich dich richtig verstanden habe, müsste das hier funktionieren:


Sub kopieren()
Dim rng As Range, nxtrng As Range
Set rng = Range("B:B").Find(What:=" ", LookAt:=xlPart)
Do
   Set nxtrng = Range("B:B").FindNext(rng)
   If nxtrng.Row < rng.Row Then Exit Do
   rng.Offset(0, -1).Copy Destination:=Range(rng.Offset(1, -1), _
      nxtrng.Offset(-1, -1))
   Set rng = nxtrng
Loop
End Sub


Gruß Ingolf
Anzeige
AW: Kopieren immer nur bis zum nächsten Eintrag...
31.10.2006 20:04:45
Isolde
Hi, IngGi,
erstmal vielen Dank für die Mühe, aber leider hilft das Makro nicht.
Ich verstehe es -ehrlich gesagt- auch nicht wirklich: die Range B:B meint doch die Spalte B, oder? Dort stehen keine relevanten Daten...
Nur in Spalte A, wie in den Dateien veranschaulicht... Schaust du dir diese mal an? Dankeschön.
Dass immer, wenn sich in Zelle A die Kontonummer ändert, in der gleichen Zeile die Zelle I leer ist, habe ich deshalb hervorgehoben, weil ich dachte, man könne diese Information in der gesuchten Formel/dem gesuchten Makro verwerten...
Ich meine, ich hätte mal eine Formel gesehen, die das gewünschte leistet, leider finde ich diese bei allen Recherchen nicht mehr, egal, nach welchem Stichwort ich suche... Schade.
Ich hoffe auf weitere Hilfe, herzlicehn Dank!
LG, Isolde
Anzeige
AW: Kopieren immer nur bis zum nächsten Eintrag...
31.10.2006 20:18:46
Isolde
INGOLF!!!!
Da war ich wohl etwas voreilig: da mir die Range so "spanisch" vorkam, hatte ich sie geändert: nix lief...
Lasse ich DEIN Original-Makro laufen, kriege ich schönstes Ergebnis...
(Nur die letzte Zelle bleibt unverändert...)
Bin mal gespannt, was mit diesem Cödchen bei der Original-Datei mit ca. 48.000 Zeilen/Datensätzen 'rauskommt...
Also: verstanden habe ich's noch immer nicht (siehe bitte auch mein VBA-Level), aber es scheint ja doch zu funktionieren.
1000 Dank also, einstweilen und bitte nix für ungut für meine vermeintlich logische Schlussfolgerung...
Ganz liebe Grüsse, Isolde
Anzeige
AW: Kopieren immer nur bis zum nächsten Eintrag...
01.11.2006 00:37:31
IngGi
Hallo Isolde,
kurze Erklärung des Makros:
Range("B:B") bedeutet wie du schon vermutet hast Spalte B. Ich hab gesehen, dass in deiner Tabelle in Spalte B immer bei einem Kontonummernwechsel in Spalte A eine Nummer mit einem Leerzeichen in der Mitte steht. In den anderen Zellen stehen dagegen fortlaufende Nummern ohne Leerzeichen. Daran kann man die Kontonummernwechsel in Spalte A gut erkennen und ich habe der Spalte B hier einfach mehr vertraut, weil sie einfacher strukturiert ist als Spalte A.
Das Makro sucht also nach einem Leerzeichen in Spalte B und merkt sich die Zelle in der Variablen "rng". Dann sucht es das nächste Leerzeichen und merkt sich die Zelle in der Variablen "nxtrng". Nun wird der Inhalt der Zelle neben rng, also in Spalte A in die Zwischenablage kopiert und in alle Zellen zwischen rng und nxtrng - natürlich wiederum in Spalte A - eingefügt. Anschließend nimmt er die Zelle in "nxtrng" als neue "rng" und läuft die Schleife zwischen Do und Loop nochmal durch. Er sucht sich das nächste Leerzeichen, merkt sich die Zelle wieder in "nxtrng" und kopiert von Neuem.
Das geht immer so weiter, bis er irgendwann kein Leerzeichen in Spalte B mehr findet. Dann steigt er aus der Schleife aus und beendet das Makro. Da er zu dem letzten "rng" kein "nxtrng" mehr findet, kopiert er die letzte Kontonummer auch nicht mehr weiter runter. Aber ich denke, das ist von Hand schneller erledigt, als eine Anpassung des Makros. Ansonsten, wenn du das Makro öfters brauchst, melde dich nochmal.
Gruss Ingolf
Anzeige
AW: Kopieren immer nur bis zum nächsten Eintrag...
02.11.2006 21:44:37
Isolde
Guten Abend, Ingolf,
herzlichen Dank für diese Erklärung zur Funktionsweise des Makros!
Meine Original-Datei sah natürlich anders aus, als die "gefakte", die ich hochgeladen habe. Mit deiner Erklärung im Hinterkopf habe ich flugs eine Spalte B (als Hilfs-Spalte) eingefügt, irgendwas 'reinkopiert, was mindestens 1 Leerzeichen enthält, und promptes Ergebnis erhalten! Die inzwischen fast 50.000 Zeilen waren in weniger als einer Minute mit Kontonummer bestückt, du hast mich vor schlimmster Sehnenscheidenentzündung (hallo, strg-C und strg-V!) bewahrt, herzlichen Dank!
Bis demnächst auf dieser Site,
LG, Isolde
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige