Guten Morgen zusammen,
ich suche nach einer finalen Lösung um das Aufteilen ohne Rest per VBA zu realisieren.
Datengrundlage:
In meiner Excel Tabelle werden in der Spalte P Euro-Werte mit 2 Nachkommastellen angezeigt, die durch Formeln errechnet werden und im Falle von errechneten Teilsummen mehr als 2 Nachkommastellen haben können.
Im nachfolgend genannten Beispiel ist die erste Zahl der Gesamtwert von dem aus in der nachfolgenden Berechnung grundsätzlich auszugehen ist. Auch hat dieser IMMER KEINE "krummen" Nachkommastellen.
Excel zeigt also aufgrund der Euro-Währungsformatierung an:
PS: Der erste Wert gibt immer die Gesamtsumme und die darunter stehenden Werte die einzelnen Teilsummen.
2.380,00 €
981,53 €
104,23 €
1.294,23 €
… jedoch stehen folgende Werte in den Zellen:
2.380,000000000000000000000000 €
981,532846715328000000000000 €
104,233576642336000000000000 €
1.294,233576642340000000000000 €
Herausforderung:
Die angezeigten Zahlen müssen nach einem Ausdruck als PDF weiter verarbeitet werden.
Und genau hier ergibt sich mein Problem, da die Summe der 3 Teilsummen NICHT IMMER die Gesamtsumme ergibt.
Aufgabe:
Ausschließlich für den Druck des PDF-Dokumentes soll die Differenz aus Gesamtsumme MINUS Summer aller Teilsummen gebildet und auf die letzte Teilsumme addiert werden.
Stand der Dinge.
Soweit hab ich den dafür benötigten VBA-Code bereits erfolgreich umsetzen können, hadere aber an der Problematik, dass ich es nicht hinbekomme den VBA-Code für die Berechnung der Differenz so zu gestalten, dass für die Berechnung NUR die tatsächlich angezeigten Teilsummen verwendet werden, da sich NUR SO die Differenz ergibt, die sich ansonsten durch die Verwendung mit allen Nachkommastellen nicht ermitteln lässt.
Hier mal die beiden betreffenden Code-Zeilen zur Ermittlung der summeTeilsummen sowie der Differenz:
summeTeilsummen = Int(WorksheetFunction.Sum(newRng.Columns(2).Resize(newRng.Rows.Count - 1, 1).Offset(1, 0)) * 100) / 100
differenz = Int(newRng.Cells(1, 2).Value * 100) / 100 - summeTeilsummen
' Differenz auf den letzten Teilbetrag addieren, gerundet auf 2 Nachkommastellen
lastCell.Value = WorksheetFunction.Round(lastCell.Value + differenz, 2)
Einen Haken gibt es zudem auch noch, denn während aufgrund der jeweiligen Nachkommastellen im oben gezeigten Beispiel KEINE Aufrundung der 2. Nachkommastelle der angezeigten Teilsummen erfolgt, ist dies beim nachfolgend gezeigten Beispiel der Fall.
Ein einfaches "abschneiden" des Strings nach der 2. Nachkommastelle löst mein Problem somit auch nicht.
Daher eben mein Anliegen, ob es nicht möglich ist mit den tatsächlich angezeigten Teilsummen, die Differenz zu errechnen.
12.184,00 €
5.673,74 €
5.873,78 €
636,48 €
12.184,00000000000000000000000 €
5.673,74328358209000000000000 €
5.873,77910447761000000000000 €
636,47761194029900000000000 €
DANKE für Deine Antwort im Voraus.
Jens
|