4.4k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo ihr lieben!

Ich sitze schon wieder an einem neuen Problem:

Ich habe folgenden Code:


urbetrag = Range("b11")

While urbetrag - 0.01 > 0
urbetrag = urbetrag - 0.1
d = d + 1
Wend

While urbetrag - 0.01 = 0
urbetrag = urbetrag - 0.1
d = d + 1
Wend

Range("B17") = d


Wenn in B11 also in urbetrag "0,01" steht, müsste d=1 sein, d ist aber 0.

Warum?

Vielleicht habt ihr ja eine Lösung.
Besten Dank schonmal im Voraus!

15 Antworten

0 Punkte
Beantwortet von
Hallo rainberg,

entschuldige bitte, dass ich mich jetzt erst bei dir melde. Hatte heute einen langen Uni-Tag.

Ich habe mir grade deine beiden Versionen angesehen und bin völlig aus dem Häusschen. Vielen Dank dafür. Ich weiß zwar nicht, warum du es nicht für das Optimum hälst, aber ich kann es kaum glauben.

Den Unterschied zwischen den beiden Versionen erkenne ich zwar, kann ihn aber nicht deuten :D

Kannst du mir vielleicht sagen, woran es nun lag, das mein "Münzwechsler" ohne erkennbares System Cents und Pennies verschluckt hat?

Vielen Vielen Dank für deine Hilfe. Ich werde mich jetzt mal dran setzten und versuchen deinen Code nachzuvollziehen :D

Frohe Weihnachten und einen guten Rutsch ins neue Jahr
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo,

Kannst du mir vielleicht sagen, woran es nun lag, das mein "Münzwechsler" ohne erkennbares System Cents und Pennies verschluckt hat?


Soviel ich weiß, rechnet Excel im Dezimalbereich immer mit 16 Stellen.
Da kommt es eben vor, dass im hinteren Dezimalbereich Zahlen >0 erscheinen, obwohl diese nicht eingegeben sind.

Somit gehen Vergleiche mit anderen Werten oftmals in die Hose, so auch bein Deinen Berechnungen.

Ich will diesen Fakt hier nicht weiter vertiefen, man muss es eben nur wissen, dann kann man sich ganz einfach mit der Funktion "Round" helfen, wie ich es auch getan habe.

Ob diese Funktion bei den Berechnungen in allen While-Wend-Schleifen nötig ist, habe ich nicht getestet, habe sie aber sicherheitshalber verwendet.

Ich hoffe, das hilft Dir weiter.

Ebenfalls Frohen Weihnacht und

Gruß
Rainer
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo noch mal,

mir fiel noch eine weitere Code-Verkürzung ein, die ich auf die Schnelle getestet habe und Dir nicht vorenthalten möchte.
Die Berechnungen werden dabei innerhalb von je einer For-Next-Schleife durchgeführt.

weitere Optimierung

Gruß
Rainer
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo zum letzten mal,

meine Weihnachtsgans hat mich so weit aufgebaut, dass mir noch eine letzte Optimierung einfiel :-))

Meine_Endfassung

Gruß
Rainer
0 Punkte
Beantwortet von
Hallo Rainer,

sorry das ich mich jetzt erst melde. bin mitten im Prüfungsstress!

Ich hab mir meine Lösung nochmal angesehen und es plötzlich klick gemacht. Ich habe den Betrag einfach mit 100 multipliziert. So werde ich die Rundungsfehler los.

Vielen Dank für deine Unterstützung vor, während und nach den Feiertagen!
...