Wie in der Runde, der mit excel-VBA round()?
Habe ich folgende Daten:
cell(1,1) = 2878.75
cell(1,2) = $31.10
cell(2,1) = $89,529.13
Jedoch, als ich versuchte zu verwenden round(cells(1,1).value*cells(1,2).value),2)
, das Ergebnis entspricht nicht cell(2,1)
. Ich dachte, es hat zu tun mit der Rundung Problem, aber ich Frage mich nur, ob es möglich ist, zu bekommen round()
zu handeln in der Regel. Das heißt, für value > 0.5
Runden. Und für value < 0.5
, abrunden?
- "Das ist für Wert > 0,5 wird aufgerundet. Und für Wert < 0.5, Runde, nach unten?" Eigentlich
Round
verhält sich so. Das problem ist, was es tut, fürvalue = 0.5
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
VBA verwendet Banker Rundung in einem Versuch, einen Ausgleich für die Neigung in immer auf-oder abrunden auf x, 5; Sie können statt;
Versuchen Sie diese Funktion, es ist ok, um Runden einen Doppel -
Wenn Sie abrunden möchten, verwenden Sie die Hälfte einstellen. Fügen Sie 0,5 bis Zahl aufgerundet und verwenden Sie die Funktion INT ().
Antwort = INT(x + 0.5)
Round(41.0 + 0.5)
führt42
.answer = Iif(Int(x) = x, x, Round(x + 0.5))
verwendet Int zu prüfen, ob es Runde42
die richtige Antwort? Was ist das problem?any value >x and <=y becomes y
1.01
wird2
. Ich denke, ich werde stick mitapplication.worksheetfunction.RoundUp(x,0)
oderapplication.worksheetfunction.Ceiling(x,1)
.<
+=
als ein symbol,<=
? well ain ' T that cute! ich bin überrascht, dass ich nie bemerkt, dass vor.Bin ich die Einführung von Zwei custom-library-Funktionen verwendet werden, die in vba, die dem Zweck dienen, der Rundung der double-Wert anstelle der Verwendung von WorkSheetFunction.RoundDown und WorkSheetFunction.RoundUp
Somit die Funktion Rdown(2878.75 * 31.1,2) wird wieder 899529.12
und Funktion RUp(2878.75 * 31.1,2) wird wieder 899529.13
In der Erwägung, dass
Die Funktion Rdown(2878.75 * 31.1,-3) zurückkehren wird, 89000
und Funktion RUp(2878.75 * 31.1,-3) zurück 90000
Versuchen, die RoundUp-Funktion:
Hatte ich ein problem wo ich hatte, um Runde bis nur und diese Antworten, die nicht arbeiten, wie ich hatte, um meinen code laufen, so habe ich eine andere Methode.
Die INT-Funktion rundet in Richtung negativ (4.2 geht auf 4, -4.2 geht bis -5)
Daher änderte ich meine Funktion zum negativen, Anwendung der INT-Funktion, dann kehrte Sie zu positiven einfach durch Multiplikation mit -1 vor und nach
Math.Runde wird Banker Rundung und Runde auf die nächste gerade Zahl, wenn die Zahl, die gerundet werden fällt genau in der Mitte.
Einfache Lösung, die Verwendung Worksheetfunction.Runde(). Das wird die Runde, wenn Ihr auf der Kante.
Verwendet die Funktion "RDown" und "RUp" aus ShamBhagwat und erstellt eine andere Funktion, die zurückkehren wird der Runde Teil (ohne die Notwendigkeit zu geben, "Ziffern" für Eingang)
ist die Ausgabe:
Dies ist ein Beispiel, j ist der Wert, den Sie möchten, um up-Runde.
Wenn der Rest größer als 0, dann rundet es sich, einfach. Bei 1.5 ist es auto-Runden zu 2, es wird also weniger als 0.
Hier ist eine die ich gemacht habe. Es funktioniert nicht verwenden Sie eine zweite variable, die ich mag.
Dieser arbeitete für mich
Finde ich folgende Funktion ausreichend:
Bekam ich einen workaround mich:
Fühlen Sie sich frei, um mir zu danken. Funktioniert wie ein Zauber für mich und die autosize-Funktion funktioniert auch!