Supportnet / Forum / Tabellenkalkulation
if schleife
Frage
hallo zusammen, habe folgendes problem:
ich bekomme in einer spalte eine unmenge an verschiedenen datumen (zum teil vor heutigem zum teil danach)
zusätzlich ist jedes noch mit einem index versehen (zb 3 bedeutet 3 monate = 90 tage, 6 = 180 tage usw.)
ich würde nun eine schleife benötigen die mir folgendes erlaubt:
wenn ausgeworfenes datum < heutiges und index = 3, dann + 90 tage und zwar solange, bis ausgeworfenes datum > als heutiges
wäre für eure hilfe sehr dankbar
lg
stefan
Antwort 1 von Saarbauer
Hallo,
wenn ausgeworfenes datum < heutiges und index = 3, dann + 90 tag...
ist nicht ganz eindeutig wo die 90 / 180 Tage hinzugerechnet werden. Gehe vom ausgeworfenem Datum steht und aus.
Ich nehme mal an, dass in Spalte A das Datum, in B der Index steht und in Zeile 1 Überschriften, dann könnte man in C2 eingeben
=Wenn(A2<Heute(); ausgeworfenes Datum + B2*30; )
und dann nach unten ziehen
Gruß
Helmut
wenn ausgeworfenes datum < heutiges und index = 3, dann + 90 tag...
ist nicht ganz eindeutig wo die 90 / 180 Tage hinzugerechnet werden. Gehe vom ausgeworfenem Datum steht und aus.
Ich nehme mal an, dass in Spalte A das Datum, in B der Index steht und in Zeile 1 Überschriften, dann könnte man in C2 eingeben
=Wenn(A2<Heute(); ausgeworfenes Datum + B2*30; )
und dann nach unten ziehen
Gruß
Helmut
Antwort 2 von piano
Hallo
Wenn ich deine Aufgabenstellung richtig verstanden habe, könnte die Schleife etwa so ausseghen:
(Daten in Spalte "A", Index in "B", Ergebnis in "C")
Gruß piano
Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
- probieren geht über studieren -
Wenn ich deine Aufgabenstellung richtig verstanden habe, könnte die Schleife etwa so ausseghen:
Sub DatSchleife()
Dim ausgeworfenes_datum As Date
Dim Heute As Date
Heute = Now()
LetzteA = Range("A65536").End(xlUp).Row ´ letzte belegte Zeile von Spalte A
For i = 1 To LetzteA
ausgeworfenes_datum = Cells(i, 1).Value
Index = Cells(i, 2).Value
If ausgeworfenes_datum <= (Heute - 1) Then
datum_neu = DateAdd("m", Index, ausgeworfenes_datum)
´ oder
´ datum_neu = DateAdd("d", Index * 30, ausgeworfenes_datum)
Cells(i, 3).Value = datum_neu
Else
Exit For
End If
Next i
End Sub(Daten in Spalte "A", Index in "B", Ergebnis in "C")
Gruß piano
Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
- probieren geht über studieren -
Antwort 3 von haserl
vielen dank einmal
hier mein problem noch einmal konkretisiert:
ich würde mit dem index gerne auf eine matrix zugreifen, die ich händisch warten würde (dh. 3 = 90, 6 = 180 usw.)
beispiel:
ausgeworfenes datum = 20.10.2005, index = 3, gefordertes datum = 20.4.2006
vielleicht kann man dies noch berücksichtigen - wäre super! vielen dank
lg
stefan
hier mein problem noch einmal konkretisiert:
ich würde mit dem index gerne auf eine matrix zugreifen, die ich händisch warten würde (dh. 3 = 90, 6 = 180 usw.)
beispiel:
ausgeworfenes datum = 20.10.2005, index = 3, gefordertes datum = 20.4.2006
vielleicht kann man dies noch berücksichtigen - wäre super! vielen dank
lg
stefan
Antwort 4 von piano
Hallo
Siehe
das bedeutet: + [Index] mal Monate
bzw.
das bedeutet: [Index] mal 30 Tage, dazu brauchst du keine Matrix weil 2 x 30 = 60, 3 x 30 = 90, 6 x 30 = 180, usw.
Gruss piano
Siehe
Zitat:
datum_neu = DateAdd("m", Index, ausgeworfenes_datum)
datum_neu = DateAdd("m", Index, ausgeworfenes_datum)
das bedeutet: + [Index] mal Monate
bzw.
Zitat:
datum_neu = DateAdd("d", Index * 30, ausgeworfenes_datum)
datum_neu = DateAdd("d", Index * 30, ausgeworfenes_datum)
das bedeutet: [Index] mal 30 Tage, dazu brauchst du keine Matrix weil 2 x 30 = 60, 3 x 30 = 90, 6 x 30 = 180, usw.
Gruss piano
Antwort 5 von piano
PS:
20.10.2005 + 90 Tage ist nicht der 20.4.2006 !!!
Zitat:
dh. 3 = 90,
und dh. 3 = 90,
Zitat:
ausgeworfenes datum = 20.10.2005, index = 3, gefordertes datum = 20.4.2006
ausgeworfenes datum = 20.10.2005, index = 3, gefordertes datum = 20.4.2006
20.10.2005 + 90 Tage ist nicht der 20.4.2006 !!!

