Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1776to1780
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

Addition in VBA rechnet nicht richtig

Addition in VBA rechnet nicht richtig
11.08.2020 16:44:33
Tom
Hallo liebe Excel Profis, ich verzweifele seit Tagen an einer (für euch wahrscheinlich) ganz einfachen Aufgabe.
Ich möchte die errechneten Werte der Zellen A1 bis A3 in VBA addieren und in A4 ausgeben lassen.
Dieses wollte ich erreichen mit dem Befehl:
.Range("A4") = Application.Sum(Range("A1:A3"))
oder alternertiv mit
.Range("A4") = Application.WorksheetFunction.Sum(Range("A1:A3"))
Berechne ich dieses ohne VBA mit dem Befehl =Summe(A1:A3) bekomme ich das korrekte Ergebnis. Als Berechnung mittels VBA weicht das Ergebnis immer um einige Cent ab.
Um Nachkomma Werte abzurunden habe ich diese auf 2 Nachkomma Stellen begrenzt
.Range("A1") = Round(Range("A1"), 2)
.Range("A2") = Round(Range("A2"), 2)
.Range("A3") = Round(Range("A3"), 2)
.Range("A4") = Round(Range("A4"), 2)
Alle Zellen sind formatiert als Zahl mit 2 Nachkomma Stellen.
Wer kann mir helfen

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bitte Beispielmappe mit Fehler hochladen! (owT)
11.08.2020 17:16:24
EtoPHG

AW: Addition in VBA rechnet nicht richtig
11.08.2020 17:36:59
Tom
Die Werte A1 - A4 sind nur exemplarisch zur Vereinfachung so benannt. Tatsächlich habe ich rund 15 Zellen welche alle aus unterschiedlichen Arbeitsmappen ihre Daten beziehen.
Ich denke diese Datenflut hier hochzuladen wäre etwas überdimensioniert.
Aus diesem Grunde habe ich die Eigenschaften der Zellen A1-A4 so detailliert beschrieben.
Die Daten der anderen Blätter beinhalten Uhrzeiten welche erst in reine Zahlen (*24) umgerechnet werden, bevor sie in den Zellen A1-A3 angezeigt werden.
Könnte es sein, dass es einen anderen VBA Befehl gibt den ich nicht kenne?
AW: Addition in VBA rechnet nicht richtig
11.08.2020 17:45:00
onur
Wenn du z.B. in A1-A3 1,9999999 stehen hast, siehst du durch die Formatierung nur 1,99.
3 x 1,99 ergäbe ja 5,97, aber wenn du das alles addierst, ergibt das 5,9999997, also 5,99 (wenn 2-stellig formatiert) - daher die Differenz (vermute ich mal stark).
Was du in der Zelle siehst und was tatsächlich drin steht, sind nicht immer das Selbe - es hängt immer von der Formatierung ab. Wenn du ein Datum mit Uhrzeit siehst, ist ja in Wirklichkein eine Dezimalzahl drin.
Anzeige
AW: Addition in VBA rechnet nicht richtig
11.08.2020 18:01:11
Tom
Vielen Dank für die schnelle Antwort.
Müsste dann Deiner Erklärung zur Folge bei dem Befehl =Summe(A1:A3) nicht auch die von dir beschriebene Abweichung des Ergebnisses angezeigt werden?
Tatsächlich rechnet Excel jedoch mit dem Befehl SUMME völlig korrekt wodurch ich die Vermutung hatte, dass es sich um einen Fehler des VBA Codes zum Addieren handelte.
Die Zellen A1-A3 werden per VBA rerundet auf 2 Nachkomma Stellen und die Formatierung ist ebenfalls auf zwei Dezimalstellen.
Testweise habe ich auch die Dezimalstellen um ein vielfaches erhöht um genau den von dir beschriebenen Fehler auszuschließen. Hier ware es tatsächlich nur null stellen die sichtbar wurden, folglich habe ich den Fehler hier für mich einfach mal ausgeschlossen.
Anzeige
AW: Addition in VBA rechnet nicht richtig
11.08.2020 18:02:47
onur
Solange du die (Beispiels-) Datei nicht postest, kann ich nichts Genaueres sagen, da meine Kristallkugel in der Werkstatt ist.
AW: Addition in VBA rechnet nicht richtig
12.08.2020 15:17:35
Tom
Hallo onur,
ich habe die Daten jetzt mal auf das notwendigste zusammengeschrumpft und sensible Firmendaten entfernt. Das Problem liegt in der Arbeitsmappe Abrechnung in der die Addition unter I34 bzw I35 falsche Werte berechnet.
Ich bin mit meinem Latein am Ende und hoffe, dass ihr mir hier weiter helfen könnt.
https://www.herber.de/bbs/user/139595.xlsm
AW: Addition in VBA rechnet nicht richtig
12.08.2020 15:49:49
peterk
Hallo
Du hast einen "blöden" Fehler gemacht:
Das FAHRGELD (C28) wird erst nach der Berechnung der Summe definiert, dadurch fehlen Dir diese 20€ (Excel rechnet richtig, zumindest meist)
Peter
Anzeige
AW: Addition in VBA rechnet nicht richtig
12.08.2020 16:53:41
Tom
Hallo Peter,
ich habe die Addition Summe definiert von I17:I30 wobei das Fahrgeld in I28 berechnet wird. Folglich sollte es eigentlich in die Berechnung mit einfließen oder habe ich hier etwas übersehen?
AW: Addition in VBA rechnet nicht richtig
12.08.2020 16:58:53
peterk
Hallo Tom
Ja, Du hast etwas übersehen. Du schreibst die Summe in I34 ABER: C28 (Fahrgeld) wird erst 4 Zeilen später zugewiesen, d.h. in dem Moment wo Du die Summe schreibst ist das Fahrgeld noch Null!!
Peter
AW: Addition in VBA rechnet nicht richtig
12.08.2020 17:25:07
Tom
Hey Peter,
das war genau der Fehler, vielen vielen lieben Dank, du hast mir den Tag gerettet.
Du kannst dir nicht vorstellen wie dankbar ich dir bin.
Ich wünsche dir und allen anderen die bereit waren mir zu helfen noch einen schönen Abend
Ganz liebe Grüße
Tom
Anzeige
AW: Addition in VBA rechnet nicht richtig
12.08.2020 17:29:29
onur
Übrigens - wenn du mal richtig programmieren kannst, kannst du den ganzen Code um mind. 80% kürzen, da er total aufgebläht ist.
Wozu eigentlich ein Mix aus VBA und Formeln? Warum nicht (fast) alles mit Formeln?
AW: Addition in VBA rechnet nicht richtig
12.08.2020 17:36:43
Tom
Danke für den Hinweis, ich arbeite an mir.
Ist halt alles ein learning by doing deshalb bin ich für jede Hilfe dankbar.
Magst du mir ein Beispiel geben wo ich im Code etwas verbessern könnte?
AW: Addition in VBA rechnet nicht richtig
12.08.2020 17:43:49
onur
z.B. statt:
Range("J17").Value = "€"
Range("J18").Value = "€"
Range("J19").Value = "€"
Range("J21").Value = "€"
Range("J22").Value = "€"
Range("J23").Value = "€"
Range("J24").Value = "€"
Range("J25").Value = "€"
Range("J26").Value = "€"
Range("J27").Value = "€"
Range("J28").Value = "€"
Range("J29").Value = "€"
Range("J30").Value = "€"
Range("J31").Value = "€"
Range("J34").Value = "€"
Range("J35").Value = "€"
Range("J37").Value = "€"
Range("J38").Value = "€"

das:
For i= 17 to 19
Range("J" & i).Value = "€"
Next i
For i= 21 to 38
Range("J" & i).Value = "€"
Next i

Anzeige
AW: Addition in VBA rechnet nicht richtig
12.08.2020 18:02:19
Tom
Habs gleich mal ausprobiert aber Excel beschwert sich bei For i= 17 to 19 über das i
Ich denke ich muss den Wert i vorher benennen, sehe ich das richtig?
ich wäre dir sehr dankbar für deine Mühe wenn du mir hier auch nochmal helfen würdest.
Excel ist so geil, den Code zu optimieren wird meine nächste Lernstufe sein
AW: Addition in VBA rechnet nicht richtig
12.08.2020 18:21:10
onur
Klar, sämtliche Variablen musst du direkt am Anfang deklarieren (dimensionieren).
Direkt am Anfang hinter der Sub-Anweisung (der Sub, wo die Variable benutzt wird):
Sub SoundSo()
Dim i as Integer
....

Integer, weil wir eine Ganzzahl brauchen (integer geht -32.768 bis 32.767 - das reicht).
Anzeige
AW: Addition in VBA rechnet nicht richtig
12.08.2020 17:45:44
onur
Du musst immer versuchen, Gesetzmässigkeiten zu entdecken und diese in eine Regel packen.
AW: Addition in VBA rechnet nicht richtig
12.08.2020 17:56:29
onur
Du hättest auch schreiben können:
Range("J17:J19").Value = "€"
Range("J21:J38").Value = "€"

oder

For i= 17 to 38
If i20 Then Range("J" & i).Value = "€"
Next i

AW: Addition in VBA rechnet nicht richtig
18.08.2020 11:21:52
Tom
Hallo onur,
wie würde dein Code Beispiel
For i= 17 to 38
If i20 Then Range("J" & i).Value = "€"
Next i
aussehen, wenn in Spalte J nur dann ein "€" gesetzt wird wenn in Spalte I ein Wert vorhanden ist?
AW: Addition in VBA rechnet nicht richtig
18.08.2020 17:59:37
onur
If i20 And Range("I" & i).Value "" Then Range("J" & i).Value = "€"
Anzeige
AW: Addition in VBA rechnet nicht richtig
18.08.2020 18:09:32
Tom
Vielen lieben Dank, hat wunderbar gepasst.
Gerne !
18.08.2020 18:10:50
onur
AW: Addition in VBA rechnet nicht richtig
12.08.2020 17:15:57
peterk
Hallo
Hier der Code wie es sein sollte:

.Range("I27").Value = "=C27*G27*24"
.Range("I28").Value = "=Januar!L54/Januar!C44*C28"
.Range("I37").Value = "=C37*G37"
.Range("I38").Value = "=Januar!L52/Januar!C44*C38"
'Zählt Zellen mit Wert
.Range("C28").Value = Application.WorksheetFunction.Count(Range("Januar!C7:C36"))
.Range("C37").Value = Application.WorksheetFunction.Count(Range("Januar!C7:C36"))
.Range("C38").Value = Application.WorksheetFunction.Count(Range("Januar!C7:C37"))
'Summe
.Range("I34") = Application.Sum(Range("I17:I30"))
.Range("I35") = Application.Sum(Range("I17:I29"))
'Runden
.Range("G24") = Round(Range("G24"), 2)
.Range("G25") = Round(Range("G25"), 2)
End With
'Courser in Zelle positionieren
Range("C15").Select
End Sub

Anzeige
AW: Addition in VBA rechnet nicht richtig
12.08.2020 17:25:33
onur
Wie Peter schon sagte: Fahrgeld ist von C28 abhängig, aber C28 wird erst viel später gesetzzt.
Du verwendest die vbFkt Round, ...
11.08.2020 19:22:07
Luc:?
…Tom,
und die rundet symmetrisch (wissenschaftl/finanzwirtschaftl), während die xl-Fkt asymmetrisch (kaufmännisch) rundet. Dadurch kann es zu Abweichungen vom Fml-Runden in Xl kommen.
Gruß, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
AW: Du verwendest die vbFkt Round, ...
12.08.2020 17:02:53
Tom
Hallo Luc,
vielen Dank für den Tipp aber ich muss gestehen, dass ich das nicht verstehe. Was meinst du mit xl-Fkt asymetrisch? Könntest du mir da weiterhelfen mit dem entsprechenden Code?
AW: Addition in VBA rechnet nicht richtig
12.08.2020 04:10:08
Sulprobil
VBA Round macht Bankers rounding (0,5 zur nächstgeraden Zahl), die Tabellenblattfuktion Round rundet arithmetisch (auf ab 0,5).
Schreibe in VBA an Stelle von Round lieber Application.Worksheetfunction.Round.
AW: Addition in VBA rechnet nicht richtig
12.08.2020 16:59:43
Tom
Hallo Sulprobil,
vielen Dank für deinen Tipp, leider hat es auch mit Application.Worksheetfunction.Round nicht besser geklappt. Hättest du noch eine andere Idee?

149 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige