Makros im Excel - alternierende Berechnung

Nobby Nobbs

Grünschnabel
Hallo allerseits!

Ich habe folgendes Problem mit einem Excel Makro: Ich möchte bei folgender Berechnung den Step alternieren (d.h. beim ersten Durchlauf 96, beim 2. Durchlauf 98,...):

Sub Standby-Lösung()

Sheets("Messung").Select
x = 11
For s = 775 To 100000 Step 97
Cells(x, 27).Select
ActiveCell.FormulaR1C1 = "=MEDIAN(R" & s & "C6:R" & s + 6 & "C6)"
x = x + 1
Next s

End Sub


nun habe ich folgendes hinzugefügt:

Sub Standbylösung()

Sheets("Messung").Select

y = 98
x = 11

For s = 775 To 100000 Step y
y = (x Mod 2)
If y = 0 Then y = 96
If y > 0 Then y = 98

Cells(x, 26).Select
ActiveCell.FormulaR1C1 = "=MEDIAN(R" & s & "C3:R" & s + 6 & "C3)"
x = x + 1
Next s

End Sub

Das Problem, das sich ergibt ist nun folgendes: der Step nimmt immer den Wert an, den ich vor der Schleife angegeben habe und verändert sich nicht. Wenn ich aber y erst in der Schleife definiere, dann bekomme ich einen Laufzeitfehler.
Wahrscheinlich liegt es an der Anordnung der Befehle, aber ich komme einfach nicht darauf.

Ich wäre sehr erfreut, wenn jemand mein "triviales" Problem lösen könnte!

Danke, Reinhard
 
Hallo,
das Problem ist nicht die For-Schleife, sondern deine If-Konstruktionen:
Wenn du
Code:
If y = 0 Then y = 96
If y > 0 Then y = 98
durch
Code:
If y = 0 Then
    y = 96
Else
    y = 98
End If
ersetzt funktioniert es!
Begründung:
Schauen wir uns mal deine If-Konstruktion an:
Sei y=0. Dann gibt die erste If-Anweisung y=96 aus. Nun wird an die nächste If-anweisung y=96 > 0 übergeben, mit dem Ergebnis y=98, es käme also immer y=98 raus.

Gruß
thekorn
 
Hallo!

Danke für die prompte Antwort!
Aber leider funtionierts noch nicht. Wenn ich meine 2 If Bedingungen gegen die If-Else Bedingung tausche, bleibt noch immer das alte Problem aufrecht, nämlich dass der Step-Wert bei 98 bleibt (wahrscheinlich, weil ich vor der FOR -Schleife y bereits als 98 definiert habe - ändere ich nur diesen y-Wert auf 90, dann habe ich nur 90-er Steps laufen). wie kann ich jetzt aber das y in der Schleife neu definieren?

Danke nochmals im Voraus!
Reinhard
 
Hi Nobby Nobbs

das hier sollte funktionieren:
Code:
    For s = 775 To 100000 Step y
        y = IIf((x Mod 2) = 0, 96, 98)
        Cells(x, 24).Value = y
        Cells(x, 26).Formula = "=MEDIAN(R" & s & "C3:R" & s + 6 & "C3)"
        x = x + 1
    Next s

Die eine Ausgabe ist nur eine Kontrollausgabe und kann entfernt werden.

Gruß
Das Orakel
 
Hi!

Wieder einmal Danke! Aber irgendwo passt noch etwas nicht. Die y-Kontrollspalte gibt zwar die richtigen Steps raus, aber in die Formel werden die Werte nicht übernommen. Also bei mir schaut das Makro zur Zeit folgendermaßen aus (inzw. schon weiter überarbeitet):

Code:
Sub Test()


Sheets("Messung").Select
x = 3
y = 90
For s = 775 To 100000 Step y
        y = IIf((x Mod 2) = 0, 90, 100)
        Cells(x, 14).Value = y
        Cells(x, 15).Select
        ActiveCell.FormulaR1C1 = "=MEDIAN(R" & s & "C4:R" & s + 18 & "C4)"

        x = x + 1
    Next s
    
End Sub

Das übernommene Intervall ist immer 90.
Wenn ich y vor der Schleife nicht definiere, ist der Step 0 und es wird immer die gleiche Berechnung durchgeführt.
Wahrscheinlich liegt der Fehler bei mir (dass ich die bereits (dankenswerterweise) erhaltenen Feeds falsch umgesetzt habe).

Aber ich wäre noch für jede Hilfe dankbar,
LG Reinhard
 
Hi,

ich hab zwar keine Ahnung, was Deine Formel machen soll, aber ich sehe das Problem jetzt im Schleifenkonstrukt. Ich würde es Ändern in
Code:
    x = 3
    y = 90
    s = 775 - 100 ' Kenne den genaue Startwert nicht, aber Y wird beim ersten Durchlauf 100
    While s < 100000
        y = IIf((x Mod 2) = 0, 90, 100)
        s = s + y
        Cells(x, 14).Value = y
        Cells(x, 15).Select
        ActiveCell.FormulaR1C1 = "=MEDIAN(R" & s & "C4:R" & s + 18 & "C4)"
        x = x + 1
    Wend

Gruß
Das Orakel
 
Hi,

gern geschehen. Aber könntest Du den Thread noch als erledigt markieren :)

Gruß
Das Orakel
 
Zurück