stevens hat geschrieben:Ich schaffe es einfach nicht eine Formel der folgenden Art mittels der Calc-Möglichkeiten auszudrücken:
Do i=1 to 3
if a(i) = "r" & b(i) > 0 then c5=c5+d(i)
end
Kann mir jemand helfen ?
Danke.
Do-Schleifen mit "normalen" Calc-Möglichkeiten gibt es nicht. Da müsstest Du die Basic-Programmierung bemühen.
Mehrere Bedingungen gehen jedoch schon. Als "Variablen" müsste man Zelladressen nehmen.
Ich weiss nicht, ob ich das Ganze richtig verstehe, aber ich versuchs mal über eine Matrix:
H1, H2, H3 für die Werte a(1), a(2), a(3),
I1, I2, I3 für die Werte b(1), b(2), b(3),
J1, J2, J3 für die Werte d(1), d(2), d(3)
Mit der Funktion INDEX kann man auf eine Zelle in einer Matrix zugreifen,
indem man die Koordinaten mitgibt.
Für a, b und d wären das Spalte 1, Spalte 2, Spalte 3,
für i wäre das Zeile 1, Zeile 2, Zeile 3
a(1) entspräche dann: =INDEX($H$1:$J$3;1,1),
a(2): =INDEX($H$1:$J$3;2,1)
a(3): =INDEX($H$1:$J$3;3,1)
b(1): =INDEX($H$1:$J$3;1,2)
b(2): =INDEX($H$1:$J$3;2,2)
b(3): =INDEX($H$1:$J$3;3,2)
d(1): =INDEX($H$1:$J$3;1,3)
d(2): =INDEX($H$1:$J$3;2,3)
d(3): =INDEX($H$1:$J$3;3,3)
du musst alle 3 Bedingungen einzeln mit WENN prüfen.
Das "&" bildest Du mit UND ab.
c5=c5+d(i)
lässt sich so nicht realisieren.
Eine Formel lässt sich nicht durch sich selbst ändern.
Mit Zelladressen abgebildet, könnte es z.B. so sein, dass man in D5 schreibt: =C5+irgendwas.
Die ganze Formel in D5 müsste dann so aussehen:
=WENN(UND(INDEX($H$1:$J$3;1;1)="r";INDEX($H$1:$J$3;1;2)>0);C5+INDEX($H$1:$J$3;1;3);WENN(UND(INDEX($H$1:$J$3;2;1)="r";INDEX($H$1:$J$3;2;2)>0);C5+INDEX($H$1:$J$3;2;3);WENN(UND(INDEX($H$1:$J$3;3;1)="r";INDEX($H$1:$J$3;3;2)>0);C5+INDEX($H$1:$J$3;3;3);"was, wenn keine Bedingung zutrifft?")))
Ich bin aber nicht sicher, ob das genau das ist, was Du brauchst,
oder ob die Änderung des Wertes in meinem Beispiel in Zelle D5 "von Schlaufe zu Schlaufe" weitergezogen werden muss.
Das ist mit CALC-Formeln nicht zu machen.
Da müsstest Du die Abteilung "Basic" befragen.
[quote="stevens"]Ich schaffe es einfach nicht eine Formel der folgenden Art mittels der Calc-Möglichkeiten auszudrücken:
Do i=1 to 3
if a(i) = "r" & b(i) > 0 then c5=c5+d(i)
end
Kann mir jemand helfen ?
Danke.[/quote]
Do-Schleifen mit "normalen" Calc-Möglichkeiten gibt es nicht. Da müsstest Du die Basic-Programmierung bemühen.
Mehrere Bedingungen gehen jedoch schon. Als "Variablen" müsste man Zelladressen nehmen.
Ich weiss nicht, ob ich das Ganze richtig verstehe, aber ich versuchs mal über eine Matrix:
H1, H2, H3 für die Werte a(1), a(2), a(3),
I1, I2, I3 für die Werte b(1), b(2), b(3),
J1, J2, J3 für die Werte d(1), d(2), d(3)
Mit der Funktion INDEX kann man auf eine Zelle in einer Matrix zugreifen,
indem man die Koordinaten mitgibt.
Für a, b und d wären das Spalte 1, Spalte 2, Spalte 3,
für i wäre das Zeile 1, Zeile 2, Zeile 3
a(1) entspräche dann: =INDEX($H$1:$J$3;1,1),
a(2): =INDEX($H$1:$J$3;2,1)
a(3): =INDEX($H$1:$J$3;3,1)
b(1): =INDEX($H$1:$J$3;1,2)
b(2): =INDEX($H$1:$J$3;2,2)
b(3): =INDEX($H$1:$J$3;3,2)
d(1): =INDEX($H$1:$J$3;1,3)
d(2): =INDEX($H$1:$J$3;2,3)
d(3): =INDEX($H$1:$J$3;3,3)
du musst alle 3 Bedingungen einzeln mit WENN prüfen.
Das "&" bildest Du mit UND ab.
c5=c5+d(i)
lässt sich so nicht realisieren.
Eine Formel lässt sich nicht durch sich selbst ändern.
Mit Zelladressen abgebildet, könnte es z.B. so sein, dass man in D5 schreibt: =C5+irgendwas.
Die ganze Formel in D5 müsste dann so aussehen:
=WENN(UND(INDEX($H$1:$J$3;1;1)="r";INDEX($H$1:$J$3;1;2)>0);C5+INDEX($H$1:$J$3;1;3);WENN(UND(INDEX($H$1:$J$3;2;1)="r";INDEX($H$1:$J$3;2;2)>0);C5+INDEX($H$1:$J$3;2;3);WENN(UND(INDEX($H$1:$J$3;3;1)="r";INDEX($H$1:$J$3;3;2)>0);C5+INDEX($H$1:$J$3;3;3);"was, wenn keine Bedingung zutrifft?")))
Ich bin aber nicht sicher, ob das genau das ist, was Du brauchst,
oder ob die Änderung des Wertes in meinem Beispiel in Zelle D5 "von Schlaufe zu Schlaufe" weitergezogen werden muss.
Das ist mit CALC-Formeln nicht zu machen.
Da müsstest Du die Abteilung "Basic" befragen.