Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1116to1120
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Rechenfehler Zeit Min <-> Sek

VBA Rechenfehler Zeit Min <-> Sek
Björn
Hallo zusammen,
eigentlich ganz einfach, ich habe 2 Spalten, in A steht Zeit in Min, in B die Zeit in Sek.
A errechnet sich aus B. z.B. in A1 steht: =B1/60
Soweit so gut.
Wenn ich nun per VBA prüfe, ob die Werte zueinander passen, kommt bei Eingabe von 31 Sekunden in B1 für die Prüfung
MsgBox [b1] = [a1] * 60

FALSCH raus. WARUM?
Ich verstehe das nicht. Bei allen anderen Zeiten (außer 31 und 62 Sekunden, 93 geht wieder) funktioniert das.
Rechnet hier VBA anders als Excel? Und wenn ja wie?
Wenn ich mir das Ergebnis "[a1]*60" in eine Zelle schreiben lasse, dann steht da wieder die 31.
Das gibt es doch nicht.
Gruß
Björn B.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
MsgBox [b1] - [a1] * 60
11.11.2009 10:47:33
Erich
(ohne weiteren Text)
Schon klar, ...
11.11.2009 11:03:46
Björn
... ich weiß schon, dass ich das auch anders prüfen kann und dann kommt WAHR.
    MsgBox [b1] = [a1] * 60 'Hier kommt FALSCH
MsgBox [a1] = [b1] / 60  ' Hier kommt WAHR

Ich will aber wissen, warum das so ist. Das darf doch eigentlich nicht passieren.
Wer sagt mir denn, dass Deine Berechnung nicht bei irgendeiner anderen Zeit einen Fehler bringt?
Irgendwas muss hier doch VBA falsch machen.
Wie kann ich das zuverlässig prüfen?
Gruß
Björn
Rechengenauigkeit
11.11.2009 11:42:42
Erich
Hi Björn,
"Das darf doch eigentlich nicht passieren."?
Doch, mit der Anzeige der Differenz wollte ich dir zeigen, dass das "FALSCH" durchaus ok ist.
Such mal hier bei "Alle Recherchen" z. B. nach Rechengenauigkeit.
31/60 ist ein unendlicher Dezimalbruch. In so einem Computer gibt es aber nur endlich viele Speicherplätze.
Deshalb wird der Wert natürlicherweise nicht genau gerechnet/gespeichert,
die Genauigkeit ist auf eine mehr oder weniger bestimmte Stellenzahl begrenzt.
Hier beträgt sie ca. signifikante 15 Stellen. Dahinter kann irgend etwas stehen.
Bei zwei mathematisch gleichen Werten können sich die Stellen dahinter unterscheiden,
wenn die Werte auf unterschiedliche Weise berechnet wurden.
Oft ist ein Ausweg, die Werte vor dem Vergleich noch mal zu runden.
Oder man prüft statt
a = b * c
die Differenz auf einen zulässigen Maximalwert:
Abs(a - b * c) < 0.000000000001
Bei großen Zahlen kann es natürlich genauso gut Probleme geben.
Die Formeln der Zeile 2 sind hier nach unten kopiert:
 ABCD
1111111111111111111111111111111111111111111111,000000000011111111,000000000000000
222222222222222277777777777777715873015873015,90000000001587301,571428570000000
344444444444444454444444444444402267573696145,1200000000226757,367346939000000
488888888888888838111111111111100323939099449,303000000032393,909620991200000
5177777777777778026677777777777800046277014207,04330000004627,701374427320000
6355555555555555018674444444444400006611002029,5776200000661,100196346760000
7711111111111110013072111111111100000944428861,368231000094,442885192394300

Formeln der Tabelle
ZelleFormel
A2=A1*2
B2=B1*7
C2=C1/7
D2=D1/7

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Danke.
11.11.2009 13:24:17
Björn
Danke.
Sowas ähnliches habe ich vermutet.
Trotzdem verstehe ich nicht, warum VBA anders als Excel rechnet, dachte, die haben die gleiche Rechengenauigkeit.
Ich verstehe auch nicht, warum die Makro-Berechnung "falsch" rechnet, wenn ich die Ergebnisse aber anzeigen lasse oder in eine Zelle schreibe, dann sind sie wieder richtig...
Komisch.
Naja, wenigstens weiß ich jetzt, wie ich das ganze umgehen kann.
Vielen Dank für Deine Hilfe.
Gruß
Björn B.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige