Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Función ROUND

| 56 comentarios

La función ROUND es empleada para redondear valores numéricos.

1. Lógica de funcionamiento

Entiéndase que si el valor a redondear tiene parte decimal menor a 0.5, el valor obtenido será igual a la parte entera del número ingresado. Por otro lado, si el valor a redondear tiene parte decimal mayor o igual a 0.5, el valor obtenido será igual al entero inmediato superior de la parte entera del número ingresado.

2.  Sintaxis:

= ROUND (valor a redonear, decimales a emplear)

3. Ejemplo práctico (sin macros):

En el caso de que se requiera emplear esta función, se debe colocar en la hoja "=Redondear", si el Excel esta en español,  o "=Round" si el Excel se encuentra en Inglés.

Si desea ver otras traducciones revise la  Lista de funciones en Excel en varios idiomas

función round excel

 

4. Ejemplo práctico (con macros):

Si deseamos redondear el valor 19.65 colocado en la celda A1 de nuestra hoja de Excel y luego mostrar su valor ya redondeado, podemos utilizar la función ROUND, como sigue:

Sintaxis en VB:

Sub redondear()

valor = round(Range("A1"),1)

MsgBox ("El valor redondeado es: " & valor)

End Sub

Respuesta del sistema:

funcion round

 

 

Elaborado por: Ernesto Tarazona Niño de Guzmán.

56 comentarios

  1. Esta funcion ROUND es interesante, las operaciones que se realiza con la programacion VBA de excel siempre muestra el resultado completo, es decir con todos los decimales provenientes del calculo, esto no es agradable si deseamos ver este valor en un formulario o en una ventana de mensaje, con esta funcion ROUND podemos dar el formato deseado al valor calculado.

    • Quiero complementar que la funcion ROUND nos ayuda con el numero de decimales que deseamos presentar, pero si no deseamos redondear pero queremos presentarlo en una ventana de mensaje, la funcion ideal a usar es FORMAT.

      • Pedro
        existe otra posibilidad de la función, por ejemplo si deseamos que el redondeo continúe teniendo decimales, es posible indicarlos, esto es util si requerimos que nuestro redondeo tenga decimales... por ejemplo que al calcular el igv de un producto este tenga mas de 2 decimales y solo requerimos de 2

        Sub redondeo()
        valor = Round(Range("A1"), 2)
        MsgBox ("El valor redondeado es: " & valor)
        End Sub

        • Saludos, necesito ayuda, tengo un txtbox que me extrae el valor numerico de una celda activa, txt1= ActiveCell, el problema es que quiero que me de el valor con 3 decimales y con su inmediato superior, con lo anterior el valor es "9,556127" con la función Val, osea txt1=Val(ActiveCell), el valor es "9", quisiera que el valor fuera "9,560", con su inmediato superior y 3 decimales, esto sin tener que poner varialbles y cosas así, mas o menos como esto:
          txt1 = Round("val(ActiveCell)", 3), o algo parecido, el asunto es que no se como poner la expresión, Gracias de antemano.

  2. La Función Round (Redondear), es de utilidad para dar dar formato a valores, por ejemplo en el promedio, cuando se quiere dar 0.5 a favor del alumno, si se tiene 12.5, este valor con la función Round a cero decimales, se tendría un valor de 13.

  3. Es importante esta funcion toda vez que siempre es necesario en calculos contables los redondeos y sobre todo que es importante trabajar con enteros dentro de una base datos.

  4. La función round es muy usada para balances de planta como en mi caso lo interesante para continuar su aplicaión es poder llevar cantidades de distintos archivos a uno maestro que colecte cantiddes redondeadas para fines comerciales y asi concensuar cifras sin propagar desviaciones. Me pareceria interesante ver como poder realizar esta labor.

  5. De acuerdo Pedro, se trata de una función de mucha aplicación en los distintos tipos de archivos con macros que se preparen, ayuda a ordenar cifras y a mostrar reportes automáticos.
    Saludos
    Daniel

  6. Está función te permite tener orden en los cálculos pues está función lo encontramos desde el excel intermedio.

  7. Bueno redondee el número de una manera diferente, solo grabe una macro y utilicé la función Redondear, con lo cual me salió el siguiente código:

    Sub Redondear()
    ActiveCell.FormulaR1C1 = "=ROUND(R[-1]C,0)"
    Range("B4").Select
    End Sub

    Claro que a diferencia del ejemplo anterior no saldrá un mensaje con el valor redondeado sino que este valor se obtendrá en una celda de la hoja.

    • Hola.
      En el codigo, como me paso a mi, esta de más Range("B4"). Select
      Seguiste grabando la macro cuando presionaste sobre la celda B4.
      Saludos.
      LB.

  8. ESTA FUNCION ME PARECE UTIL PARA APLICARLA EN TODO AQUELLO QUE ESTE REFERIDO AL CAMPO DE LOS IMPUESTOS, DADO QUE POR LEY LOS VALORES NUMERICOS SE REDONDEAN TAL CUAL LA DEFINICIÓN LO HACE.

  9. En una macro procedimiento función que realize estableci al final el siguiente código:

    function intereses (tipo, saldo, fecha_inicio, fecha_termino)
    If.....
    else....
    End If
    intereses = application.Round(intereses,0)
    End Function

    Y me devuelve el total de intereses redondeado de un periodo por devoluciones de impuestos.

  10. Devuelve el total de intereses redondeado a cero decimales de un periodo por devoluciones de impuestos en cualquier celda en la que sea invocada.

  11. La siguiente macro calcula el promedio de 3 notas redondeada a 0 decimales:
    ActiveCell.FormulaR1C1 = "=ROUND(AVERAGE(RC[-3]:RC[-1]),0)"
    ActiveCell.Offset(1, 0).Range("A1").Select

  12. Es muy util para redondear las notas y sacar los promedios

  13. Esta funciòn en mi opinion es poca utilizado en mi campo ya que nos permiute redondear un número decimal, devolviendo un número entero ya que donde me desarrollo profesionalmente cada centavo tiene un sigmificado presedente y no debe tener alteraciòn a las cantidades que maneja un presupuesto para el gobierno.

  14. Podría ser útil convertir el procedimiento en una función que reciba dos parametros: la celda donde se encuentra el número que deseamos redondear, y el número de decimales para el redondeo, comentando el msgbox, queda así:

    Function redondear1(celda, numdec)
    valor = Round(Range(celda), numdec)
    '*MsgBox ("El valor redondeado es: " & valor)
    redondear1 = valor
    End Function

  15. El siguiente código sirve para generar aleatoriamente un número entre 5 y 20 (redondeado a cero decimales). este código puede ser muy util para simular notas de alumnos de una asignatura. para el ejemplo 10 notas.

    El código es el siguiente:

    +-------------------------------------------
    Public Sub aleatorio_rango()
    Dim i As String
    Dim a As Integer
    Range("A1:A10").Select
    For a = 0 To Selection.Cells.Count
    valor = Round(Rnd() * (20 - 5) + 5, 0)
    ActiveCell.Offset(a, 0).Value = valor
    If a = 9 Then
    Exit For
    End If
    Next a
    End Sub

  16. He utilizado la función ROUND y me parece interesante.
    Podemos adicionarles 2 opciones, aunque seguramente existen otras:

    1) Al intentar redondear los valores de números impares, el 0.5 siempre va al inmediato superior, pero los números partes son redondeados al inmediato inferior.
    Es decir 11.5 y 12.5 son redondeados a 12.

    Se puede adicionar una suma minima donde siempre el valor con limite en 0.5 tendrá una millonésima adicional y siempre redondeará al inmediato superior.

    Ejemplo de Código:

    Sub redondear()
    valor = Round(Range("A1") + 0.000000001)
    MsgBox ("El valor redondeado es: " & valor)
    End Sub

    Por otro lado, también podemos determinar el redondeo de decimales, colocando el valor round y adicionando el número de decimales

    Código:

    Sub redondear()
    valor = Round(Range("A1"), 2)
    MsgBox ("El valor redondeado es: " & valor)
    End Sub

    De este código podemos tener los siguientes resultados:
    12.5125 lo redondea a 12.51
    12.5151 lo redondea a 12.52

    Saludos

    • La función Round también permite redondear un valor a las decenas, centenas o millares más cercanos. Si bien el valor numérico luego de la coma indica la cantidad de decimales que queremos mostrar, podemos utilizar el mismo valor numérico en negativo para redondear hacia la izquierda del punto decimal.

      Por ejemplo:

      Supongamos que tenemos el valor 157976 en la celda A1

      Round(Range(A1), -3)

      Devolverá como resultado 158000

      El valor numérico 0 representa los enteros. El 1 representa décimas, 2 representa centésimas y el 3 representa milésimas. De la misma manera encontramos que el -1 representa decenas, -2 representa centenas, -3 representa millares y así sucesivamente.

  17. Quisiera saber si se podra que un numero dividido por ejem. 11/7=1.57 pero si le quito las decimales se va redondeando pasa 1.6, luego a 2 y ocupo que el numero que me muestre sea 1 sin decimales y sin redondear.

  18. Esta función es equivalente a la que aparece en excel como redondea.menos o redondea.mas...
    es posible usar la función redendea.menos en la creación de una UDF?
    puede ser algo así como WorsheetFunction?

  19. Soy profesor y en mi labor diaria tengo que revisar pruebas y entregar notas, las cuales deben ser valor redondeados.
    supongo que podría usar esta función anidada con la función promedio
    Sub redondear()
    promediofinal = promedio(round(Range(“A1:C1″)))
    MsgBox (“LEl promedio final es: ” & promediofinal)
    End Sub

    es esto posible

  20. Tambien veo que el redondeo es por exceso, es posible redondear por defecto

    • Para redondear hacia abajo puedes usar ROUNDDOWN, es similar a ROUND.
      La sintaxis es: ROUNDDOWN(number,num_digits)

      • Intente utilizar rounddown y no funciona ya que no la reconoce como función predefinida, cual es la sintaxis correcta? De igual forma si quisiera redondear a un número superior aunque el decimal no sea igual o mayor a 0.5 como se podría formular?

        • Estimado,
          Yo grabé una macro (macro 3) y luego aplique la función y me salió la función prueba con la siguiente sintaxis.

          Sub Macro3()
          '
          ' Macro3 Macro
          '
          ' Keyboard Shortcut: Ctrl+Shift+C
          '
          ActiveCell.FormulaR1C1 = "=ROUNDDOWN(R[-1]C,2)"
          Range("B22").Select
          End Sub

  21. La funcion es buena, en mi caso lo utilizaria para calculos de planilla, pero sirve con divisiones de mas de 3 decimales?

  22. Para redondear hacia abajo puedes usar ROUNDDOWN, es similar a ROUND solo que redondea hacia abajo.

    La sintaxis es: ROUNDDOWN(number,num_digits)

  23. Para redondear hacia abajo puedes usar ROUNDDOWN, es similar a ROUND.
    La sintaxis es: ROUNDDOWN(number,num_digits)

  24. Bueno, sobre lo mostrado tengo las siguientes observaciones:

    La funcion ROUND requiere de 2 datos: Round ( expression, [decimal_places] ), donde el 2do datos en este ejemplo es "0", por lo cual si se omite lo considerará como si colocarás el dato "0".

    Luego, cuando he copiado y pegado la informacion de este blog en el editor de VBA no me ha aparecido correctamente la macro, por lo cual tuve que digitarla manualmente.

    Finalmente, me quedan las dudas: ¿si yo quiero que el resultado redondeado me aparezca en B1 cual debería ser la macro? y si coloco un rango de datos: ¿me podria esta funcion ayudar a redondear todas de un porrazo o deberia hacer un ROUND por cada celda que quiero redondeado?

  25. Bueno, sobre lo mostrado tengo las siguientes observaciones:
    La funcion ROUND requiere de 2 datos: Round ( expression, [decimal_places] ), donde el 2do datos en este ejemplo es "0", por lo cual si se omite lo considerará como si colocarás el dato "0".

    Luego, cuando he copiado y pegado la informacion de este blog en el editor de VBA no me ha aparecido correctamente la macro, por lo cual tuve que digitarla manualmente.

    Finalmente, me quedan las dudas: ¿si yo quiero que el resultado redondeado me aparezca en B1 cual debería ser la macro? y si coloco un rango de datos: ¿me podria esta funcion ayudar a redondear todas de un porrazo o deberia hacer un ROUND por cada celda que quiero redondeado?

Deja una respuesta

Los campos requeridos estan marcados con *.