Discussion:
Preisliste so runden, dass alle Preise auf 9 ct. enden
(zu alt für eine Antwort)
Nörgelseff
2009-01-14 14:06:07 UTC
Permalink
Hallo Ihr Alleskönner,

ich habe eine Preisliste, deren Preise ich so anpassen muss, dass alle auf 9
ct. enden.
Z. B. aus 1,51 soll 1,59 werden, aus 1,88 soll 1,89 werden, aus 1,04 soll
1,09 werden.
Ich kenne die Formel für Obergrenze, mit der ich auf 0,05 runden kann

=Obergrenze(A1;0,05)

Aber die hilft mir da nicht weiter, oder?

Vielen Dank
Nörgelseff
Dieter Schulz
2009-01-14 14:23:25 UTC
Permalink
Hallo Nörgelseff
Post by Nörgelseff
Hallo Ihr Alleskönner,
ich habe eine Preisliste, deren Preise ich so anpassen muss, dass alle auf 9
ct. enden.
Z. B. aus 1,51 soll 1,59 werden, aus 1,88 soll 1,89 werden, aus 1,04 soll
1,09 werden.
mein Vorschlag:

=GANZZAHL(a1*10)/10+0,9
Post by Nörgelseff
Ich kenne die Formel für Obergrenze, mit der ich auf 0,05 runden kann
=Obergrenze(A1;0,05)
Aber die hilft mir da nicht weiter, oder?
nicht wirklich ;-)

MfG
Dieter
Dieter Schulz
2009-01-14 14:25:38 UTC
Permalink
Mist, da fehtl eine Null
Post by Dieter Schulz
Hallo Nörgelseff
Post by Nörgelseff
Hallo Ihr Alleskönner,
ich habe eine Preisliste, deren Preise ich so anpassen muss, dass alle
auf 9 ct. enden.
Z. B. aus 1,51 soll 1,59 werden, aus 1,88 soll 1,89 werden, aus 1,04
soll 1,09 werden.
=GANZZAHL(a1*10)/10+0,9
=GANZZAHL(a1*10)/10+0,09

MfG
Dieter
Nörgelseff
2009-01-15 09:50:11 UTC
Permalink
Hallo Dieter,

recht herzlichen Dank, das funktioniert genau so wie ich es wollte.
Lediglich bei einem Preis wie z. B. 0,70 kommt als Ergebnis 0,69 raus. Das
ist in meinem Fall aber auch in Ordnung.

Schöne Grüße
Ingrid
Post by Dieter Schulz
Mist, da fehtl eine Null
Post by Dieter Schulz
Hallo Nörgelseff
Post by Nörgelseff
Hallo Ihr Alleskönner,
ich habe eine Preisliste, deren Preise ich so anpassen muss, dass alle
auf 9 ct. enden.
Z. B. aus 1,51 soll 1,59 werden, aus 1,88 soll 1,89 werden, aus 1,04
soll 1,09 werden.
=GANZZAHL(a1*10)/10+0,9
=GANZZAHL(a1*10)/10+0,09
MfG
Dieter
Alexander Wolff
2009-01-15 12:34:56 UTC
Permalink
Post by Nörgelseff
Post by Dieter Schulz
=GANZZAHL(a1*10)/10+0,09
recht herzlichen Dank, das funktioniert genau so wie ich es wollte.
Lediglich bei einem Preis wie z. B. 0,70 kommt als Ergebnis 0,69
raus. Das ist in meinem Fall aber auch in Ordnung.
Das liegt daran, dass Deine 0,70 in Wirklichkeit 0,695 (oder höher) sind
(etwa durch eine berechnende Formel). Daher solltest Du bei Anwendungen, die
hohe Genauigkeiten erfordern, immer

a) mit =RUNDEN() oder ähnlichem rechnen oder
b) Extras Optionen [X] Genauigkeit wie angezeigt verwenden

Achtung: Letzteres ist gefährlich, wenn Du das dahinterstehende Modell und
die daraus resultierenden Notwendigkeiten nicht verstehst! Denn es bezieht
sich auf das ganze Blatt.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Bernd P
2009-01-15 21:58:54 UTC
Permalink
Hallo Alexander,

Letzteres ist Schrott:
http://www.sulprobil.com/html/excel_don_ts.html

Have fun,
Bernd
Alexander Wolff
2009-01-16 09:47:45 UTC
Permalink
Post by Bernd P
Hallo Alexander,
http://www.sulprobil.com/html/excel_don_ts.html
Have fun,
Bernd
Hallo Bernd,

solange die Funktion selbst korrekt funktioniert, wenn man weiß, worauf man
achten muss, ist sie für mich kein Schrott. Schließlich kann man ja auch
durch bspw. ein versehentliches Überkopieren seine Eingabedaten verlieren
oder das Arbeitsblatt vergessen, vor dem Verlassen zu speichern (trotz
Rückfrage). Genauer: Man halte das Inputblatt extra außerhalb der Datei vor,
um darauf zurückgreifen zu können. Übrigens habe ich sie selbst noch nie
verwendet, obwohl sie sogar bei bestimmten Problemen Speicherplatz sparen
kann (zugegeben meist geringfügig).

Richtig ist natürlich, wenn man außerhalb von Excel (z.B. Open Office) damit
arbeiten muss. Dann fliegt einem sowas um die Ohren (wenn die Funktionalität
nicht vorhanden ist).

Schade, dass Du den Punkt 2 Deiner "Don'ts" nicht erläuterst. Erstens
schreibst Du "SUMPRODUCT/COUNTIF" (wo ich "SUMIF/COUNTIF" erwarten würde,
oder nur "SUMPRODUCT/{SUM}"), und zweitens habe ich den Artikel von Williams
zwar mal gelesen, aber da er lang ist, brauchte es doch eine etwas genauere
Lokalisierung der Stelle. Außerdem gibt es Änderungen ab Excel 12, die
vorher nicht gelten. Ich verwende Excel 12 nicht.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Bernd P
2009-01-16 16:02:43 UTC
Permalink
Post by Alexander Wolff
...
Schade, dass Du den Punkt 2 Deiner "Don'ts" nicht erläuterst. Erstens
schreibst Du "SUMPRODUCT/COUNTIF" (wo ich "SUMIF/COUNTIF" erwarten würde,
oder nur "SUMPRODUCT/{SUM}"), und zweitens habe ich den Artikel von Williams
zwar mal gelesen, aber da er lang ist, brauchte es doch eine etwas genauere
Lokalisierung der Stelle. Außerdem gibt es Änderungen ab Excel 12, die
vorher nicht gelten. Ich verwende Excel 12 nicht.
...
Hallo Alexander,

[OT]

Danke fuer den Hinweis. Die Webseite wurde stark geaendert. Relevant
ist der Teil mit Charles' COUNTU Funktion:
http://msdn.microsoft.com/en-us/library/aa730921.aspx#Office2007excelPerf_WhyCalculationSpeedImportant
SUMPRODUCT/COUNTIF ist weiter richtig, aber ich werde den Hinweis
etwas detaillieren. Dieser Tipp ist IMHO von der Excel Version
unabhaengig.

Viele Gruesse,
Bernd
Alexander Wolff
2009-01-16 18:26:41 UTC
Permalink
Post by Bernd P
Post by Alexander Wolff
...
Schade, dass Du den Punkt 2 Deiner "Don'ts" nicht erläuterst. Erstens
schreibst Du "SUMPRODUCT/COUNTIF" (wo ich "SUMIF/COUNTIF" erwarten
würde, oder nur "SUMPRODUCT/{SUM}"), und zweitens habe ich den
Artikel von Williams zwar mal gelesen, aber da er lang ist, brauchte
es doch eine etwas genauere Lokalisierung der Stelle. Außerdem gibt
es Änderungen ab Excel 12, die vorher nicht gelten. Ich verwende
Excel 12 nicht. ...
Hallo Alexander,
[OT]
Danke fuer den Hinweis. Die Webseite wurde stark geaendert. Relevant
http://msdn.microsoft.com/en-us/library/aa730921.aspx#Office2007excelPerf_WhyCalculationSpeedImportant
SUMPRODUCT/COUNTIF ist weiter richtig, aber ich werde den Hinweis
etwas detaillieren. Dieser Tipp ist IMHO von der Excel Version
unabhaengig.
1. Es gibt die Funktionen SUMIF und COUNTIF, die syntaktisch ähnlich sind.
Dann gibt es SUMPRODUKT und {SUM}, die demggü anders sind. In welchem
Zusammenhang aber sprichst Du von SUMPRODUCT/COUNTIF, also zwei Funktionen
aus zwei Familien? - Ah - jetzt verstanden: Du meintest tatsächlich Division
miteinander - ist das aber nicht ein bisschen exotisch?

Außerdem wird dort im Beispiel der Speedgewinn-Faktor von 226 durch
Verwendung von VBA nur durch ein zusätzliches Erfordernis (Sortierung) an
die Daten (Speziallogik der Formel) erreicht! Das kann meine Oma auch. Man
könnte generell sagen:
a) Die Verwendung von etwas Grips für Formeln oder auch Modelle kann
Größenordnungen bedeuten
b) Ein ähnliches Thema ist die Anordnung von optimiertem Code für
Parallel-Computing - oft geht so etwas nur durch menschliche Intelligenz.
c) Bei häufig notwendiger Recalculation schon bei der Eingabe lösche ich
Formelbereiche bis auf den ersten Eintrag, und fülle dann immer bei Bedarf
nach unten und rechts die Formeln wieder aus. Das nur als Tipp für
VBA-Ungeübte.

Ich habe mal vor längerer Zeit zum Thema SUM/SUMPRODUCT/DSUM/SUMIF getestet:
http://xxcl.de/0038.htm

2. COUNTU steht in dem Artikel ca. bei 50% der Textlänge, nicht bei 10%
(Schieberegler)
http://msdn.microsoft.com/en-us/library/aa730921.aspx#Office2007excelPerf_FindingPrioritizingCalculationBottlenecks
(und dann noch etwas weiter unten). Ich habs dann durch Suchen nach COUNTU
gefunden.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Bernd P
2009-01-17 11:20:17 UTC
Permalink
Hallo Alexander,

[OT = Off topic, wir diskutieren nicht mehr die Originalfrage]
Post by Alexander Wolff
...
Außerdem wird dort im Beispiel der Speedgewinn-Faktor von 226 durch
Verwendung von VBA nur durch ein zusätzliches Erfordernis (Sortierung) an
die Daten (Speziallogik der Formel) erreicht! Das kann meine Oma auch. Man
a) Die Verwendung von etwas Grips für Formeln oder auch Modelle kann
Größenordnungen bedeuten
...
Nein, da wird nirgendwo sortiert, es wird lediglich EINE Zahl
zurueckgegeben. Charles sollte wohl seine Funktion als Typ LONG
definieren.

Falls Du (oder Deine Oma) eine Worksheet Loesung in dem
Geschwindigkeitsbereich von Charles' COUNTU Funktion kennt oder
findet, lass' es mich bitte wissen. Das Gleiche gilt fuer den Fall,
dass Du (oder eben auch Deine Oma) die Sortierung schnell mit
"erschlagen" koenntet. Ich verbessere meine Lfreq Funktion gern:
http://www.sulprobil.com/html/listfreq.html

Viele Gruesse,
Bernd
Alexander Wolff
2009-01-18 12:00:42 UTC
Permalink
Post by Bernd P
Post by Alexander Wolff
...
Außerdem wird dort im Beispiel der Speedgewinn-Faktor von 226 durch
Verwendung von VBA nur durch ein zusätzliches Erfordernis (Sortierung) an
die Daten (Speziallogik der Formel) erreicht! Das kann meine Oma auch. Man
a) Die Verwendung von etwas Grips für Formeln oder auch Modelle kann
Größenordnungen bedeuten
...
Nein, da wird nirgendwo sortiert, es wird lediglich EINE Zahl
zurueckgegeben. Charles sollte wohl seine Funktion als Typ LONG
definieren.
Ich hab nicht so genau hingeschaut, aber dass COUNTirgendwas nur eine Zahl
zurückgeben soll, war mir auch klar. Mittlerweile sehe ich auch, dass es
nicht mit Sortieren gelöst wird, sondern mit dem Aufbau einer weiteren
Liste - allgemein gesagt: Mit einer Behandlung innerhalb von VBA-Variablen
oder Adressräumen. Den Effekt habe ich auf http://www.xxcl.de/5067.htm auch
mit zwei Größenordnungen Unterschied. Mich hat das Ergebnis damals
umgehauen.
Post by Bernd P
Falls Du (oder Deine Oma) eine Worksheet Loesung in dem
Geschwindigkeitsbereich von Charles' COUNTU Funktion kennt oder
Oma meint grad aus der Küche, dass sie nun mal nicht so fit in VBA ist. Wenn
das Küchenmesser aber speziell geschärft sein müsse, um schnell zu
schneiden, würde sie es ja auch zum Spezialisten geben. Wenn sie es aber
schlechter allein lösen möchte, versteht sie Worksheetfunktionen ausreichend
gut.
Post by Bernd P
findet, lass' es mich bitte wissen. Das Gleiche gilt fuer den Fall,
dass Du (oder eben auch Deine Oma) die Sortierung schnell mit
http://www.sulprobil.com/html/listfreq.html
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Bernhard Sander
2009-01-14 15:41:07 UTC
Permalink
Hallo Nörgelseff,
Post by Nörgelseff
ich habe eine Preisliste, deren Preise ich so anpassen muss, dass alle auf 9
ct. enden.
Z. B. aus 1,51 soll 1,59 werden, aus 1,88 soll 1,89 werden, aus 1,04 soll
1,09 werden.
Ich kenne die Formel für Obergrenze, mit der ich auf 0,05 runden kann
=Obergrenze(A1;0,05)
Aber die hilft mir da nicht weiter, oder?
vielleicht so:
=OBERGRENZE(A1;0,1) - 0,01
das rundet aber nach unten bei z.B. 100 => 99,99, 1,8 => 1,79, 0,1 =>0,09
0 => -0,09

oder so:
=UNTERGRENZE(A1;0,1) + 0,09
das rundet in den obigen Grenzfällen auf: 100 => 100,09, 1,8 => 1,89,
0,1 => 0,19, 0 => 0,9


Gruß
Bernhard Sander
Nörgelseff
2009-01-15 09:52:01 UTC
Permalink
Hallo Bernhard,

vielen Dank für die beiden Formeln. Ich habe beide ausprobiert, sie
funktionieren genau so wie ich es brauche!!
Lediglich bei einem Preis von z. B. 0,70 kommt bei beiden Formeln als
Ergebnis 0,69 raus. Das ist in meinem Fall aber auch ok.
Post by Bernhard Sander
Hallo Nörgelseff,
Post by Nörgelseff
ich habe eine Preisliste, deren Preise ich so anpassen muss, dass alle auf 9
ct. enden.
Z. B. aus 1,51 soll 1,59 werden, aus 1,88 soll 1,89 werden, aus 1,04 soll
1,09 werden.
Ich kenne die Formel für Obergrenze, mit der ich auf 0,05 runden kann
=Obergrenze(A1;0,05)
Aber die hilft mir da nicht weiter, oder?
=OBERGRENZE(A1;0,1) - 0,01
das rundet aber nach unten bei z.B. 100 => 99,99, 1,8 => 1,79, 0,1 =>0,09
0 => -0,09
=UNTERGRENZE(A1;0,1) + 0,09
das rundet in den obigen Grenzfällen auf: 100 => 100,09, 1,8 => 1,89,
0,1 => 0,19, 0 => 0,9
Gruß
Bernhard Sander
Nörgelseff
2009-01-15 10:00:00 UTC
Permalink
Nochmal Hallo Bernhard,

ich stelle gerade fest, dass die zweite Formel doch so rundet, wie du es
gesagt hast, nämlich nach oben.
Ich hatte nicht gesehen, dass in meinem Beispiel zwar in der Liste 0,70
stand, der Wert war aber als Zahl mit 2 Kommastellen definiert. In
Wirklichkeit steht da 0,699999988079071 drin.
Also, alles supergut.
Nochmal danke
Nörgelseff
Post by Nörgelseff
Hallo Bernhard,
vielen Dank für die beiden Formeln. Ich habe beide ausprobiert, sie
funktionieren genau so wie ich es brauche!!
Lediglich bei einem Preis von z. B. 0,70 kommt bei beiden Formeln als
Ergebnis 0,69 raus. Das ist in meinem Fall aber auch ok.
Post by Bernhard Sander
Hallo Nörgelseff,
Post by Nörgelseff
ich habe eine Preisliste, deren Preise ich so anpassen muss, dass alle auf 9
ct. enden.
Z. B. aus 1,51 soll 1,59 werden, aus 1,88 soll 1,89 werden, aus 1,04 soll
1,09 werden.
Ich kenne die Formel für Obergrenze, mit der ich auf 0,05 runden kann
=Obergrenze(A1;0,05)
Aber die hilft mir da nicht weiter, oder?
=OBERGRENZE(A1;0,1) - 0,01
das rundet aber nach unten bei z.B. 100 => 99,99, 1,8 => 1,79, 0,1 =>0,09
0 => -0,09
=UNTERGRENZE(A1;0,1) + 0,09
das rundet in den obigen Grenzfällen auf: 100 => 100,09, 1,8 => 1,89,
0,1 => 0,19, 0 => 0,9
Gruß
Bernhard Sander
Alexander Wolff
2009-01-15 12:36:40 UTC
Permalink
Post by Nörgelseff
Ich hatte nicht gesehen, dass in meinem Beispiel zwar in der Liste
0,70 stand, der Wert war aber als Zahl mit 2 Kommastellen definiert.
In Wirklichkeit steht da 0,699999988079071 drin.
Oh, da habe ich im anderen Thread vorschnell geantwortet ... es gilt aber
nach wie vor.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Loading...