Rundung einer Zahl auf die nächste 5 oder 10 oder X
Gegebenen zahlen wie 499, 73433, 2348, was VBA kann ich verwenden, um die Runde auf die nächsten 5 oder 10? oder eine willkürliche Zahl?
Durch 5:
499 -> 500
2348 -> 2350
7343 -> 7345
Um 10:
499 -> 500
2348 -> 2350
7343 -> 7340
etc.
- Danke an alle für all Eure Antworten. Ich bin klüger für Sie. Sorry, ich kann nur Zeichen einer einzigen ressponse als richtig, als das eigentliche "Antwort" war, verteilt über mehrere Nachrichten.
- Dies funktioniert für mich tek-tips.com/faqs.cfm?fid=5031
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist einfache Mathematik. Gegeben eine Zahl X und eine Rundung, Faktor N, die Formel wäre:
round(X /N)*N
Integrierte Antwort
Für Gleitkomma-zu-Ganzzahl, 1234.564 um 1235, (das ist VB-spezifisch, die meisten anderen Sprachen einfach abschneiden) tun:
Vorsicht: VB verwendet Banker Rundung, auf die nächste gerade Zahl, die kann überraschend sein, wenn Sie sich dessen nicht bewusst:
Danke an alle.
Zu Runden auf den nächsten X (ohne in VBA-spezifisch)
N = X * int(N /X + 0.5)
Wo int(...) liefert die nächst niedrigere ganze Zahl.
Wenn Ihr zur Verfügung Rundung Funktion bereits Runden um den nächsten ganze Zahl, dann lassen Sie die Zugabe von 0,5
int(N+0.5)
ist das gleiche wieround(N)
In VB, math.Runde hat, zusätzliche Argumente zu geben Sie die Anzahl der Dezimalstellen und Rundung-Methode. Math.Runde(10.665, 2, MidpointRounding.AwayFromZero) zurück 10.67 . Wenn die Zahl eine dezimal-oder single-Datentyp, math.Runde gibt ein decimal-Datentyp. Wenn es ist doppelt, es gibt double-Datentyp. Das kann wichtig sein, wenn option strict aktiviert ist.
Ergebnis (10.665).ToString("n2") Runden Weg von null zu geben "10.67". ohne weitere Argumente, math.Runde gibt 10.66, was dazu führen könnte, die zu unerwünschten Abweichungen.
'Beispiel: Runde 499 zur nächsten 5. Verwenden Sie die FUNKTION ROUND ().
Für eine strikte Visual Basic-Ansatz, können Sie konvertieren die floating-point-Wert auf eine Ganzzahl zu Runden, sagte integer. VB ist eine der wenigen Sprachen, die Runden auf Typ-Konvertierung (die meisten anderen einfach abschneiden.)
Vielfaches von 5 oder x getan werden kann, einfach durch Division vor und vermehren, nachdem die Runde.
Wenn Sie möchten, die Runde und halten Dezimalstellen, Math.Runde(n, d) arbeiten würde.
Hier ist unsere Lösung:
Verwendung:
Einfach ROUND(x/5)*5 sollte den job tun.
Kann ich nicht hinzufügen, Kommentar, so dass ich diese
in einer vbs ausführen und Spaß haben, herauszufinden, warum die 2 geben ein Ergebnis von 2
kann man nicht Vertrauen, Runde
sowas?
Versuchen, diese Funktion
--------------starten----------------
-------------Ende ------------
Ich ein wenig aktualisiert die Funktion der "community-wiki" (das ist die beste Antwort), nur um Runde auf die nächsten 5 (oder was du willst), mit dieser Ausnahme : die gerundete Zahl wird NIE besser als die ursprüngliche Zahl.
Dies ist nützlich in Fällen, wenn es nötig ist zu sagen, dass "ein Unternehmen lebt seit 47 Jahren" : ich möchte die web-Seite für die Anzeige "lebt seit mehr als 45 Jahren", während die Vermeidung von Lügen bei der Angabe "lebt seit mehr als 50 Jahren".
Also, wenn Sie füttern Sie diese Funktion mit 47, es wird nicht wieder 50, aber wird zurückkehren, 45 statt.
Imitieren in Visual Basic die Möglichkeit die Funktion Runden in Excel funktioniert, man muss Sie nur nutzen:
WorksheetFunction.Round(Zahl, Dezimalstellen)
Diese Weise die banking oder Buchhaltung, die Rundung, nicht die Rundung.