Microsoft Excel

Das Portal zum Thema Excel-Formeln

Gruppe: Summenfunktionen

Beitrag: gerundete Summe = Summe der gerundeten Einzelwerte *

Aufgabe
Eine Summe von Zahlen wird auf volle Tausender gerundet. Die Summe der gerundeten Einzelwerte soll das gleiche Ergebnis bringen.
Beim Überschreiten erfolgt der Ausgleich (Abzug von je 1) bei den Zahlen, deren letzte 3 Ziffern am nächsten über 500 liegen (im Beispiel: D4 und D6); - beim Unterschreiten (Addition) bei denen am nächsten drunter. (Kommen auch Negativzahlen vor: genau umgekehrt.)

       A               B               C               D       
1 4.523  477  491  5  
2 456  -456  488  0  
3 -78.845  -155    -79  
4 -14.491  491    -15  
5 65.789  211    66  
6 129.512  488    129  
7 15.562  438    16  
8 548.555  445    549  
9 1.590  410    2  
10 -897  -103    -1  
11 6.968  32    7  
12 2.987  13    3  
13        
14 682      682  
15 2       

Lösung
Die nicht gerundeten Zahlen stehen in A1 bis A12.
In A14 steht:
=RUNDEN(SUMME(A1:A12);-3)/1000
In A15 steht:
=SUMMENPRODUKT(RUNDEN(A1:A12;-3)/1000)-A14

In B1 (Hilfsspalte) steht:
=RUNDEN(A1;-3)-RUNDEN(A1;2)+ZEILE()/100000
In C1 (Hilfsspalte) steht:
=WENN(ZEILE()>ABS($A$15);"";WENN(A$15>0;KGRÖSSTE($B$1:$B$12;ZEILE());KKLEINSTE($B$1:$B$12;ZEILE())))

In D1 (Ergebnisspalte) steht:
=RUNDEN(A1;-3)/1000-ISTZAHL(VERGLEICH(B1;C:C;0))*VORZEICHEN(A$15)

B1, C1 und D1 bis Zeile 12 runterkopieren.

als Arrayformel ohne Hilfsspalten B und C von Franz Pölt:
{=RUNDEN(A1;-3)/1000-WENN(A$15=0;0;(1-2*(A$15<0))*((1-2*(A$15<0))*(RUNDEN(A1;-3)-A1+ZEILE()*10^-5)>=KGRÖSSTE((1-2*(A$15<0))*(RUNDEN(A$1:A$12;-3)-A$1:A$12+ZEILE($1:$12)*10^-5);ABS(A$15))))}