Zeile nach Bedingung Duplizieren
#1
Juten Tag,

ich bin immernoch an der Vorbereitung meines Datensatzes. (hier)

Und nun stellt sich das nächste Problem.

Ich habe 2 Spalten, eine mit dem Beitrittsdatum und eine mit dem Ausstiegstdatum. Mich interessieren vor allem Quartale, so habe ich die Daten schon mal in Quartale in der Form JahrQuartal (z.Bsp.: 20101) umgeformt. Als nächstes wollte ich die Dauer der Beobachtung ermitteln.
Das habe ich mit den Links und Rechts befehlen gemacht und einer Hilfspalte zum berechnen: (End_Jahr-Anfangs_Jahr)*4+End_Periode-Anfangs_Periode+1
So habe ich nun eine Spalte mit der absoluten Zahl des Beobachtungszeitraums in Quartalen.
Die nächsten Schritt sind nun ein wenig komplizierter:
1. Jetzt würde ich gerne jeden Datensatz gemäß der absoluten Zahl der Beobachtungsquartale vervielfachen.

[2. Danach sollten diese Duplizierten Zeilen in einer Quartalsspalte die durchlaufenden Werte von Anfangs- bis Endperiode aufweisen.
3. Außerdem habe ich einen Preis zur ersten Periode und einen zur letzten. Es wäre optimal wenn erste und letzte die jeweiligen Preise aufweisen und alle dazwischenliegenden den Durchschnittswert der beiden Preise]

Aber eins nach dem anderen habt ihr eine Idee für den 1. Schritt?

Ich freue mich auf Hilfe und Anregungen.

Beste Grüße, Felix
Top
#2
Hallöchen,

mal noch eine Frage. Wohin sollen die denn vervielfältigt werden?

Im Prinzip holst Du Dir die Anzahl und fügst die Zeile entsprechend oft ein oder darunter oder …. Hier mal ein Schnipsel zum drunter einfügen, ungetestet weil hier geschrieben Smile
Code:
'erste freie Zeile feststellen
iRow = Cells(Rows.Count,1).End(XlUp).Row + 1
'Zeilenzaehler zum Einfuegen setzen
jRow = iRow
'Schleife ueber alle vorhandenen Datensaetze, Zeile 1 = Ueberschrift
For iCnt1 = 2 to iRow - 1
'Anzahl aus Spalte E = 5 holen
iCopyCnt = Cells(iCnt,5).Value
'Kopieren, ganze Zeile
'Rows(iCnt).Copy
'Schleife zum Einfuegen
For jCnt = 1 to iCopyCnt
Cells(jRow,1).Paste
'Zeilenzaehler hochsetzen
jRow=jRow+1
'Ende Schleife zum Einfuegen
Next
'Ende Schleife ueber alle vorhandenen Datensaetze, Zeile 1 = Ueberschrift
Next
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
(28.06.2018, 05:26)schauan schrieb:
Code:
'erste freie Zeile feststellen
iRow = Cells(Rows.Count,1).End(XlUp).Row + 1
Hi Andre,
vielen Dank für deine Hilfe. Ich kenne mich leider nicht mit VBA aus. Ich habe den Code mal so kopiert und nur "aus Spalte W=23 holen...Cells(iCnt, 23). Value" abgeändert. in Spalte W stehen das die Quartale als Werte im Standartformat
Wenn ich dann die erste Zeile Makiere und Makro ausführen Klicke kommt die Fehlermeldung.
Laufzeitfehler '1004'
Was ist mit deinem kommentar "erste freie Zeile feststellen" macht das das darauffollgende Kommando? Ich habe eine Überschrift Zeile und danach gehts los.
Top
#4
Hallo Felix,

Zitat:mit 
iRow = Cells(Rows.Count,1).End(XlUp).Row

bekommst Du die letzte benutzte Zeile zu fassen

mit dem
iRow = Cells(Rows.Count,1).End(XlUp).Row + 1
dem + 1 gibt es dann natürlich die erste freie Zeile 

und das
... (Rows.Count,1) ...
bestimmt, daß die Suche sich auf die erste Spalte
also auf die Spalte A bezieht.

Top
#5
Hallo Felix,

in welcher Zeile kommt denn der Fehler 1004?

Ich habe in dieser Zeile
'Rows(iCnt).Copy

vorne noch ein Hochkomma, das muss weg, sonst wird nix kopiert Sad
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


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