nichtkaufmännisches Runden

Liebe Wissende,
habt Ihr einen Tipp, wie man folgendes Problem einfach löst?
Zahlen sollen jeweils auf 0 oder 5 gerundet werden.
Z.B. 41 -> 40; 44 -> 45; 47 -> 45; 48 -> 50
oder auch 421 -> 400; 432 -> 450.
Geht das ohne komplizierte Formelschachtelung?
Danke schon mal für jeden Hinweis!
Birgit

Liebe Birgit
Es geht mit einer Formel:

=(RUNDEN(2*A1/10^RUNDEN(LOG(A1);0);1)/2)*10^RUNDEN(LOG(A1);0)

Geht das ohne komplizierte Formelschachtelung?

Ich finde das nicht eine komplizierte Schachtelung, da du es einmal schreibst und dann kopierst.
Eine m.E. unpraktischere Variante wäre ein Makro, das ich mir erspare, weil es nicht schlauer ist. (Man soll nicht mit Makros auf Mücken schiessen.)
Nur Mut, probieren geht über studieren!
Erich

Hi Erich,

=(RUNDEN(2*A1/10^RUNDEN(LOG(A1);0);1)/2)*10^RUNDEN(LOG(A1);0)

möglicherweise ist mein Excel kapott, aber bei mir fängt die Formel erst ab dem Wert 32 zu arbeiten an. Wie läuft’s bei Dir?

Nebenbei: Die Forderung von Birgit geht noch ein wenig weiter:

oder auch 421 -> 400; 432 -> 450.

Gruß Ralf

Hi Ralf

möglicherweise ist mein Excel kapott, aber bei mir fängt die
Formel erst ab dem Wert 32 zu arbeiten an. Wie läuft’s bei
Dir?

Läuft bei mir alles bestens!

Nebenbei: Die Forderung von Birgit geht noch ein wenig weiter:

oder auch 421 -> 400; 432 -> 450.

ALLE Beispiele von Birgit laufen bei mir. Excel 2003, aber ich bin ziemlich sicher, dass das auch auf älteren Versionen geht.
TIPP: Formel nicht abschreiben, sondern hineinkopieren mit Strg-C und Strg-V. Wenn dann in der Zelle nur der Text erscheint, das führende ’ Zeichen vor dem = wegmachen.
Viel Erfolg
Erich

Hallo Birgit,

Für verschiedene Rundungen gehen folgende Formeln

5er-Rundung
=GANZZAHL(A1/10)*10+RUNDEN(REST(A1;10)/5;0)*5

50er-Rundung
=GANZZAHL(A1/100)*100+RUNDEN(REST(A1;100)/50;0)*50

500er-Rundung
=GANZZAHL(A1/1000)*1000+RUNDEN(REST(A1;1000)/500;0)*500

Diese Formeln funktionieren auch mit negativen Zahlen

Eine Lösung mit benutzerdfinierter Funktion kann so aussehen. Dabei ist auch die Rundung von Nachkommastellen möglich, negative Zahlen sind auch möglich.
Die Formel ist z.B. dann:
=Runden5(A1;50)

Function Runden5(Zahl As Double, Schritt As Double)
' Rundet eine Zahl in Schritten von 0,05 0,5 5 50 500 5000 50000 oder 500000
 Select Case Schritt
 Case 5, 50, 500, 5000, 50000, 500000 'Vorkommastellen runden
 Faktor = Int(Log(Schritt) / Log(10)) + 1
 Zahl = WorksheetFunction.Round(Zahl, 0) 'Rundung von Nachkommastellen
 If Zahl Gruß
Franz


> <small>[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]</small>

Hallo Birgit,
Die Formeln von Franz sehen einfacher aus, als was ich angegeben habe, aber dabei musst du immer die Anzahl Stellen mit angeben, d.h. je nach Stellenzahl eine andere Formel.
Meine Formel ermittelt die Stellen automatisch mit dem Logarithmus. Sie funktioniert aber nicht für negative Zahlen.
Gruss
Erich

Für verschiedene Rundungen gehen folgende Formeln

5er-Rundung
=GANZZAHL(A1/10)*10+RUNDEN(REST(A1;10)/5;0)*5

50er-Rundung
=GANZZAHL(A1/100)*100+RUNDEN(REST(A1;100)/50;0)*50

500er-Rundung
=GANZZAHL(A1/1000)*1000+RUNDEN(REST(A1;1000)/500;0)*500

Zahlen sollen jeweils auf 0 oder 5 gerundet werden.
Z.B. 41 -> 40; 44 -> 45; 47 -> 45; 48 -> 50
oder auch 421 -> 400; 432 -> 450.

Hi Birgit,
nachfolgende Tabelle bildest du mit der nach unten kopierten Formel in B1:
=LINKS(A1;1)*10^(LÄNGE(A1)-1)+((A1-LINKS(A1;1)*10^(LÄNGE(A1)-1))>=10^(LÄNGE(A1)-1)/4)*10^(LÄNGE(A1)-1)/2+((A1-LINKS(A1;1)*10^(LÄNGE(A1)-1))>=10^(LÄNGE(A1)-1)/4*3)*10^(LÄNGE(A1)-1)/2

41 40
44 45
47 45
48 50
421 400
432 450
424 400
425 450
474 450
475 500
4249 4000
4250 4500
4749 4500
4750 5000

Ich gebe ja zu, mit paar "Wenn"s wäre sie übersichtlicher und leichter durchschaubar, aber sie funktioniert:smile:)
Gruß
Reinhard

Liebe Wissende,
herzlichen Dank für all Eure Tipps!!!
Birgit

Hi Reinhard

nachfolgende Tabelle bildest du mit der nach unten kopierten
Formel in B1:
=LINKS(A1;1)*10^(LÄNGE(A1)-1)+((A1-LINKS(A1;1)*10^(LÄNGE(A1)-1))>=10^(LÄNGE(A1)-1)/4)*10^(LÄNGE(A1)-1)/2+((A1-LINKS(A1;1)*10^(LÄNGE(A1)-1))>=10^(LÄNGE(A1)-1)/4*3)*10^(LÄNGE(A1)-1)/2

Ich gebe ja zu, mit paar "Wenn"s wäre sie übersichtlicher und
leichter durchschaubar, aber sie funktioniert:smile:)

Mein Vorschlag war:

=(RUNDEN(2*A1/10^RUNDEN(LOG(A1);0);1)/2)*10^RUNDEN(LOG(A1);0)

Meine Formel funktioniert auch und ist kein Ungetüm, auch enthält sie keine WENN. Sie funktioniert auch mit Dezimalbrüchen, da sie nicht die Länge der Zahl verwendet, sondern den 10er-Logarithmus. Falls jemand eine Erklärung zu der eleganten Lösung wünscht, bitte hier nachfragen.
In aller Unbescheidenheit grüsst
Erich