Frage stellen
0

Wie definiert man einen Bereich für Funktionen in Calc?

gefragt 2015-11-27 12:05:16 +0100

dessert Gravatar-Bild

updated 2015-12-01 23:10:24 +0100

Hallo, ich versuche je zwei Zellen einer Zeile zu vergleichen, die mit dem geringeren Wert mit einer anderen Zelle zu multiplizieren und die Ergebnisse dieser Rechnung für einen Bereich zu addieren, Bsp.:

  1. A|B|C
  2. 1|2|4
  3. 4|3|2

Ziel ist es, die Summe von MIN(A2;B2)*C2+MIN(A3;B3)*C3+…+MIN(An;Bn)*Cn zu erhalten. Wie bekomme ich es hin, das in eine Kurzform für einen Bereich zu bringen? Danke für eure Hilfe!

Bearbeiten Tags ändern Melden schließen vereinen löschen

1 Antwort

0

geantwortet 2015-12-01 23:27:11 +0100

Lupp Gravatar-Bild

updated 2015-12-02 22:25:36 +0100

Mit dem Wert von N in D2 tut das die Formel (in beliebiger freier Zelle): ====FEHLERHAFT=== =SUMPRODUCT(OFFSET(A2;0;0;D2;1)+OFFSET(B2;0;0;D2;1);OFFSET(C2;0;0;D2;1))

Die deutschen Funktionsnamen sind, glaube ich, "SUMMENPRODUKT" (schön blöd!) und VERSCHIEBUNG (auch nicht wirklich gut) oder so ähnlich.

Bei einem festen Wert von N, sagen wir 20, geht auch:

=SUMPRODUCT(A2:A21+B2:B21;C2:C21)

====FEHLERHAFT ENDE====

Zur Erläuterung: SUMPRODUCT ist eine der Funktionen, deren Parameter die ForceArray-Spezifikation haben. Die Ausdrücke müssen gleichgroße Matrizen ergeben, und werden Element für Element ausgewertet. SIUMPRODUCT bildet dann die Summe der Produkte der Elementwerte, die sich auf den genutzten Parameterpositionen ergeben haben.

Siehe auch anhängendes Beispiel: ask62350SumproductApplication001.ods

Uuuups! Ich habe das mit dem Minimum verschwitzt. Da wird es deutlich komplizierter:

=SUMPRODUCT(IF(OFFSET(A$2;0;0;D2;1)<OFFSET(B$2;0;0;D2;1);OFFSET(A$2;0;0;D2;1);OFFSET(B$2;0;0;D2;1));OFFSET(C$2;0;0;D2;1))

bzw.:

=SUMPRODUCT(IF(A2:A21<B2:B21;A2:A21;B2:B21);C2:C21)

Die Minimumsfunktion kann man nämlich nicht verwenden, weil die ihre Array-Parameter nicht elementweise auswerten kann, sondern immer gleich in Listen umwandelt und dann erst auswertet. Siehe: ask62350SumproductApplication002.ods

(Bearbeitung:) Gemäß Kommentar folgt ein neuer Anhang. ask62350SumproductApplication003macro.ods

Bearbeiten Melden löschen Link mehr

Kommentare

Danke, das ist die Lösung! Bisschen blöd natürlich, dass man MIN() nicht direkt benutzen kann… Der Vollständigkeit halber: Die deutschen Funktionsnamen lauten SUMMENPRODUKT und natürlich WENN.

dessert Gravatar-Bilddessert ( 2015-12-02 12:08:56 +0100 )Bearbeiten

Also, normalerweise empfehle ich keine Benutzerprogrammierung. Aber für besondere Fälle habe ich mir schon einmal eine MIN_ Funktion gemacht, die elementweise Auswertung erlaubt. Bei der musste aber der zweite Parameter skalar sein. Wenn du also "Makros" akzeptieren kannst: Ich habe eine Funktion an die geänderten Bedürfnisse angepasst. Für eine gute Dessert gehe ich meilenweit. Siehe neuen Anhang!

Lupp Gravatar-BildLupp ( 2015-12-02 22:22:24 +0100 )Bearbeiten
Registrieren oder einloggen, um zu antworten

Antwortwerkzeuge

1 Beobachter

Statistik

Gefragt: 2015-11-27 12:03:30 +0100

Angesehen: 190 Mal

Aktualisiert: Dec 02 '15