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

Rundungsformel mit Variablen auf 5 runden

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rundungsformel mit Variablen auf 5 runden
14.10.2015 10:54:06
hary
Moin
Round ist schon eine Function.
einfach so.
Cells(4, 2) = Round(iDou, 2)

gruss hary

AW: Rundungsformel mit Variablen auf 5 runden
14.10.2015 11:01:32
Pepi
Danke für die Antwort
Doch ich will es mit einer Excelformel machen, da funktioniert es bei mir nicht richtig - bitte schau die Beispielmappe an, dann ist alles klar
mfg
Pepi

AW: Rundungsformel mit Variablen auf 5 runden
14.10.2015 11:06:54
Daniel
Hi
Das Problem ist hier die automatische Typumwandlung zwischen Zahl und Text, die erforderlich wird, wenn ein Text anstelle einer Zahl oder eine Zahl anstelle eines Textes verwendet wird.
Obwohl VBA in der Regel die englische Schreibweise benötigt (Puntk als Dezimalzeichen), wenn eine Zahl als Text verwendet werden muss, wandelt die automatische Typumwandlung mittlerweile nach dem deutschen Schema um und erzeugt die Zahl als Text mit Komma.
(ich meine mich erinnern zu können, dass in den älteren VBA-Versionen nur die expliziten Umwandlungsfuntkionen wie CStr, CDbl, CLng das nationale Schema verwendet haben, wärend die automatsiche immer das englische Schema)
Für mich läuft das ganze unter dem Begriff: Excelianische Sprachverwirrung.
funktionieren müsste folgendes:
a) Excel die Formel im deutschen Format übergeben:
Cells(4, 7).FormulaLocal = "=Runden(" & iDou & ";2)"
bzw um sicher zu gehen dass ein deutscher zahlentext erzeugt wird:
Cells(4, 7).FormulaLocal = "=Runden(" & CStr(iDou) & ";2)"
b) Selber das Komma durch den Punkt ersetzen:
Cells(4, 8).Formula = "=Round(" & Replace(iDou, ",", ".") & ",2)"
Gruß Daniel

Anzeige
AW: Rundungsformel mit Variablen auf 5 runden
14.10.2015 18:49:12
Pepi
Hallo Daniel
Offenbar scheint mein kleines Problem, doch nicht ganz so simpel zu sein.
formulalocal gibt bei mir den Laufzeitfehler 1004
Die letzte Formel (b) funktioniert zwar, aber es war nicht meine Frage.
Ich habe festgestellt, dass es funktioniert solange iDou eine Ganzzahl ist oder eine Ganzzahl in den Code geschrieben wird. Sobald aber Werte wie 1.234 als Ganzzahl oder Variable (iDou) vorgegeben werden, gibt es einen Laufzeitfehler. Wenn ich den Wert aus einer Zelle einlese funktioniert es auch. Siehe meinen Anhang!!
gerne erwarte ich weitere Vorschläge, die genau dieses Problem behandeln.
mfg
Pepi

Anzeige
AW: Rundungsformel mit Variablen auf 5 runden
14.10.2015 19:42:34
Daniel
Hi
wie sieht denn deine FormulaLocal-Formel aus?
welche der beiden Varianten hast du getestest und in welcher Excelversion?
bitte zeige deine Formeln, die den Fehler verursachen (per Copy-Paste aus deinem Code hier einfügen oder die Datei hochladen).
bei mir funktionieren beide Formeln (Excel 2010, deutsch) so wie ich sie hier gezeigt habe.
Das Problem ist das Zusammenspiel von Automatische Umwandlung der Zahl in einen Text, welche notwendig ist, wenn du die Zahl nicht zum Rechnen verwendest sondern in einen Text einbettest, und der automatischen Rückumwandlung des Textes in eine Zahl, wenn Excel die Formel analysiert.
Dabei hängt es davon ab, welches Dezimaltrennzeichen (Punkt oder Komma) verwendet wird.
und da scheint die erstumwandlung im Code ein anderes Trennzeichen zu verwenden als nacher dasjenige, welches die Formel verwendet.
Es funktioniert mit Ganzzahlen, weil Ganzzahlen kein Dezimaltrennzeichen haben sondern als Text nur aus Ziffern bestehen, in allen Ländern gleich sind.
Es funktioniert mit Zellbezügen, weil hier keine Zahlen in Text und Texte in Zahl gewandelt werden.
und jetzt erkläre mir du bitte folgedes
1. welche Frage hast du überhaupt gestellt? weder in deinem Eingangspost noch in deinem Makro steht eine konkrete Frage, also formuliere diese bitte.
2. warum ist meine Lösung für dich nicht brauchbar?
Gruss Daniel

Anzeige
AW: Rundungsformel mit Variablen auf 5 runden
16.10.2015 10:54:30
Pepi
Hallo Zusammen
Mein Verdacht hat sich bestätigt
Win 8.1 - Systemsteuerung - Region - Datum/Zeit - weitere Einstellungen: Dezimaltrennzeichen war auf "," statt auf "."
kleine Ursache, grosse Wirkung.
mfg liebe VBA-Gurus
Pepi

AW: Rundungsformel mit Variablen auf 5 runden
16.10.2015 11:00:31
Pepi
Ich habe auch noch rausgefunden, dass round() eine Sch...funktion ist. Lass folgenden Code laufen
Sub VerruecktesRunden() 'Su151015
Dim sTmp$
sTmp = "0.5 = " & Round(0.5, 0) & vbTab & Application.Round(0.5, 0) & vbLf & "1.5 = " & Round(1. _
5, 0) & vbTab & Application.Round(1.5, 0) & vbLf & "2.5 = " & Round(2.5, 0) & vbTab & Application.Round(2.5, 0) & vbLf & "3.5 = " & Round(3.5, 0) & vbTab & Application.Round(3.5, 0) & vbLf & "4.5 = " & Round(4.5, 0) & vbTab & Application.Round(4.5, 0) & vbLf & "5.5 = " & Round(5.5, 0) & vbTab & Application.Round(5.5, 0) & vbLf & vbLf
sTmp = sTmp & "0.49 = " & Round(0.49, 0) & vbTab & Application.Round(0.49, 0) & vbLf & "1.49 = " _
& Round(1.49, 0) & vbTab & Application.Round(1.49, 0) & vbLf & "2.49 = " & Round(2.49, 0) & vbTab & Application.Round(2.49, 0) & vbLf & "3.49 = " & Round(3.49, 0) & vbTab & Application.Round(3.49, 0) & vbLf & "4.49 = " & Round(4.49, 0) & vbTab & Application.Round(4.49, 0) & vbLf & "5.49 = " & Round(5.49, 0) & vbTab & Application.Round(5.49, 0) & vbLf & vbLf
sTmp = sTmp & "0.22 = " & Round(0.22, 0) & vbTab & Application.RoundUp(0.22, 0) & vbLf & "1.22 = _
" & Round(1.22, 0) & vbTab & Application.RoundUp(1.22, 0) & vbLf & "2.22 = " & Round(2.22, 0) & vbTab & Application.RoundUp(2.22, 0) & vbLf & "3.22 = " & Round(3.22, 0) & vbTab & Application.RoundUp(3.22, 0) & vbLf & "4.22 = " & Round(4.22, 0) & vbTab & Application.RoundUp(4.22, 0) & vbLf & "5.22 = " & Round(5.22, 0) & vbTab & Application.RoundUp(5.22, 0) & vbLf & vbLf
sTmp = sTmp & "0.88 = " & Round(0.88, 0) & vbTab & Application.RoundDown(0.88, 0) & vbLf & "1. _
88 = " & Round(1.88, 0) & vbTab & Application.RoundDown(1.88, 0) & vbLf & "2.88 = " & Round(2.88, 0) & vbTab & Application.RoundDown(2.88, 0) & vbLf & "3.88 = " & Round(3.88, 0) & vbTab & Application.RoundDown(3.88, 0) & vbLf & "4.88 = " & Round(4.88, 0) & vbTab & Application.RoundDown(4.88, 0) & vbLf & "5.88 = " & Round(5.88, 0) & vbTab & Application.RoundDown(5.88, 0)
MsgBox sTmp '0-2-2-4-4-6
'round() scheint nicht immer richtig zu funktionieren, Application.round() hingegen schon
End Sub

mfg Pepi

Anzeige
AW: Rundungsformel mit Variablen auf 5 runden
16.10.2015 12:22:11
Daniel
Hi
nein Pepi Round ist keine "Scheiss-Funktion", sondern rundet genauso wie Application.Round völlig korret.
du musst nur folgendes beachten:
die normale mathematische Runddungfunktion (1-4 ab, 5-9 auf) hat den Nachteil, dass häufiger aufgerundet (5 Fälle) als abgerundet wird (4 Fälle).
Somit wird, wenn du eine grosse Anzahl von Zahlen rundest (so wie Banken das tun müssen), die Summe der gerundeten Werte signifikant grösser sein als die Summe der ungerundeten Werte, weil sich Auf- und Abrundungen nicht mehr vollständig gegeneinander aufrechnen können.
um dieses Problem zu beheben bzw zu verkleinern, muss man bei 5 halt nicht nur auf, sondern auch gelegentlich mal abrunden.
um jetzt festzulegen, wann bei 5 auf oder abgerundet wird, gibt es verschiedene Methoden, eine davon ist, dass bei 5 immer zur geraden Zahl hin gerundet wird.
54 8,5 werden abgerundet.
In VBA ist es nun so, dass was Alternativ.Round die "klassische" Rundungsmethode verwendet, währen das VBA.Round die hier beschriebene Alternativmethode
Gruss Daniel

Anzeige
AW: Rundungsformel mit Variablen auf 5 runden
17.10.2015 12:37:18
Pepi
Giao Daniel
Da war ich wohl wieder mal schnell mit Urteilen, tut mir leid. Du bist offenbar ein Experte in solchen Sachen - ich eher ein Anwender. Mit der 4/5 Grenze kann es ganz schön ins Geld gehen, je nachdem ob man Schuldner oder Gläubiger ist. Ich bin dir sehr dankbar für deine Infos, dachte schon, das sei ein Fehler in der Makrofunktion - doch so habe ich beide Möglichkeiten.
Im Geschäft runden eh immer auf (haha), da ist ja auch "application.roundUp()" sehr gut geeignet dafür.
liebe Grüsse
Pepi

was es nicht alles gibt,
20.10.2015 18:28:34
Michael
Daniel,
auf Deine Ausführungen hin habe ich mal recherchiert: https://support.microsoft.com/de-de/kb/196652
Da bin ich in x Jahren Excel noch nie drübergestolpert.
Danke und schöne Grüße,
Michael

Anzeige
AW: Rundungsformel mit Variablen auf 5 runden
15.10.2015 08:49:24
Pepi
Hallo Daniel
Ich habe dich offenbar etwas verärgert - tut mir leid!
Ich habe jetzt das Ganze am PC (Arbeitsplatz) getestet und es funktioniert. Auch meine ursprüngliche Version mit iDou.
Vermutlich muss ich mal die Komma/Punkt-Einstellungen am privaten PC überprüfen.
Trotzdem vielen Dank für deine Zusatzerklärungen, die mir mehr Klarheit gebracht haben.
Ich wünsche Dir einen schönen Tag.
Pepi

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige