Arrondir un nombre au plus proche de 5 ou 10 ou X
Donné des chiffres comme 499, 73433, 2348 ce VBA puis-je utiliser pour arrondir au plus proche de 5 ou 10? ou un nombre arbitraire?
Par 5:
499 -> 500
2348 -> 2350
7343 -> 7345
Par 10:
499 -> 500
2348 -> 2350
7343 -> 7340
etc.
- Merci à vous tous pour toutes vos réponses. Je suis la plus intelligente pour cela. Désolé, je ne peux que marquer un seul ressponse comme correcte, car la vraie "réponse" a été dispersés à travers plusieurs messages.
- Cela fonctionne pour moi, tek-tips.com/faqs.cfm?fid=5031
Vous devez vous connecter pour publier un commentaire.
Il est simple de math. Étant donné un nombre X et un arrondi facteur de N, la formule pourrait être:
round(X /N)*N
Intégrée Réponse
Pour virgule flottante entier, 1234.564 à 1235, (c'est VB spécifiques, la plupart des autres langues simplement tronqué) faire:
Attention: VB utilise Les Banquiers Arrondissement, au plus proche nombre pair, ce qui peut être surprenant si vous n'êtes pas au courant de ça:
Merci à vous tous.
À tour la plus proche de X (sans VBA spécifique)
N = X * int(N /X + 0.5)
Où int(...) retourne la prochaine plus faible nombre entier.
Si votre disponible arrondi fonction déjà des tours à la plus proche nombre entier puis omettre l'ajout de 0.5
int(N+0.5)
est le même queround(N)
En VB, les maths.tour a des arguments supplémentaires pour spécifier le nombre de décimales et de la méthode d'arrondi. Mathématiques.Round(10.665, 2, MidpointRounding.AwayFromZero) sera de retour 10.67 . Si le nombre est un nombre décimal ou un seul type de données, les maths.round retourne un type de données décimal. Si elle est double, il retourne le type de données double. Qui peut être important si option strict est sur.
Le résultat de (10.665).ToString("n2") des tours à l'écart de zéro à donner "10.67". sans autres arguments mathématiques.round retourne 10.66, ce qui pourrait conduire à des indésirables les écarts.
'Exemple: Ronde 499 la plus proche 5. Vous devez utiliser la FONCTION ROUND ().
Une stricte Visual Basic, vous pouvez convertir la valeur à virgule flottante à un nombre entier d'arrondir dit entier. VB est l'une des rares langues qui arrondit sur la conversion de type (la plupart des autres simplement couper.)
Multiples de 5 ou x peut être fait simplement en divisant avant et en multipliant après la ronde.
Si vous voulez arrondir et de garder les décimales, les Maths.round(n, d) serait de travailler.
Voici notre solution:
Utilisation:
Simplement ROUND(x/5)*5 devrait faire le travail.
Je ne peut pas ajouter de commentaire, donc je vais utiliser cette
dans un vbs exécuter et avoir du plaisir à comprendre pourquoi les 2 donnent un résultat de 2
vous ne pouvez pas faire confiance ronde
quelque chose comme ça?
Essayer cette fonction
--------------démarrer----------------
-------------fin ------------
J'ai légèrement mis à jour la fonction fournie par le "wiki de la communauté" (la meilleure réponse), juste pour arrondir au plus proche de 5 (ou ce que vous voulez), avec cette exception : le nombre arrondi ne sera JAMAIS supérieur au nombre d'origine.
Ceci est utile dans les cas où il est nécessaire de dire que "une société est en vie pendant 47 ans" : je veux que la page web à afficher "est vivant depuis plus de 45 ans", tout en évitant le mensonge en déclarant "est vivant depuis plus de 50 ans".
Ainsi, lorsque vous nourrissez cette fonction avec 47, il ne sera pas de retour 50, mais sera de retour au lieu de 45.
À imiter dans Visual Basic la façon dont la fonction round fonctionne dans Excel, vous avez juste à utiliser:
WorksheetFunction.Round(nombre, les décimales)
De cette façon, le secteur bancaire ou de la comptabilité de l'arrondissement ne pas faire les arrondis.