Excel Avanzado

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

Excel Avanzado

Función ROUND

| 55 Comments

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.

55 Comments

  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?

  26. 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?

  27. Buenos días amigos,

    Apoyo a la mayoría de los comentarios sobre las distintas aplicaciones; en particular lo veo muy útil para los estudios(promedio de notas); por ejemplo si queremos saber si el alumno a aprobado o desaprobado en base a su promedio de notas (celda “B8”) podemos usar la siguiente macro:

    Sub Compobar_apto()

    Dim final As String

    promedio = Round(Range(“B8”))

    If promedio >= 11 Then final = “Aprobado” Else: final = “desaprobado”

    Range(“D7”).Value = final

    End Sub

  28. Buenas tardes Amigos

    Propongo la siguiente Macro donde se aplica la función ROUND, para determinar si un alumno a aprobado o desaprobado.

    Sub Compobar_apto()

    Dim final As String

    promedio = Round(Range(“B8”))

    If promedio >= 11 Then final = “Aprobado” Else: final = “desaprobado”

    Range(“D7”).Value = final

    End Sub

  29. Excelente función, aunque siempre tendrá mayor impacto complementada con otras.
    Una buena aplicación es determinar si un alumno a aprobado o desaprobado un curso en base a su promedio final de notas.
    Saludos

    Sub Compobar_apto()
    Dim final As String
    promedio = Round(Range(“B8”))
    If promedio >= 11 Then final = “Aprobado” Else: final = “desaprobado”
    Range(“D7”).Value = final
    End Sub

  30. Agregaría a la función un resultado de aprobado o no.

    If promedio >= 11 Then final = “Aprobado” Else: final = “desaprobado”

    Range(“D7”).Value = final

    Saludos

  31. Redondear un número a la cantidad de decimales especificados.

    Primero se debe validar el contenido de la celda antes de aplicar la función, asegurando así que se trate de un número (evitando un resultado de error).

    El Redondeo se realiza de la siguiente manera al suprimir las cifras especificadas:

    a) La última cifra que queda, PERMANECE IGUAL, si la primera cifra de las que salen es menor que 5.

    b) La última cifra que queda, SE INCREMENTA EN UNA UNIDAD, si la primera cifra de las que salen es mayor o igual que 5.

  32. Redondear un Número a la cantidad de decimales especificados.

    Primero se debe validar el contenido de la celda, antes de aplicar la función, asegurando que el contenido se trata de un número, para evitar errores del programa.

    Al suprimir las cifras especificadas, el redondeo se realiza de la siguiente manera:

    a) Si la Primera Cifra de las que salen (la que está mas a la izquierda) es MENOR QUE 5, entonces la última cifra de las que quedan PERMANECE IGUAL.

    b) Si la Primera Cifra de las que salen (la que está mas a la izquierda) es MAYOR O IGUAL QUE 5, entonces la última cifra de las que quedan SE INCREMENTA EN UNA UNIDAD.

  33. Redondear un número a la cantidad de decimales especificados.
    Primero se debe validar el contenido de la celda o ingreso, asegurando así que se trata de un número y evitar el error.
    Al suprimir las cifras especificadas, el redondeo se realiza de la siguiente manera:
    a) Si la primera cifra de las que salen es MENOR QUE 5, entonces la última cifra de las que quedan: PERMANECE IGUAL.
    b) Si la primera cifra de las que salen es MAYOR O IGUAL QUE 5, entonces la última cifra de las que quedan: SE INCREMENTA EN UNA UNIDAD.

  34. Redondear un numero a la cantidad de decimales especificados.
    Primero se debe validar el contenido de la celdas de ingreso, antes de aplicar la función, asegurando que el ingreso se trata de un numero, evitando asi errores del programa.
    Al suprimir las cifras especificadas el redondeo se realiza de la siguiente manera:
    -Si la primera cifra de las que salen es MENOR QUE 5, entonces la ultima cifra de las que quedan: PERMANECE IGUAL.
    -Si la primera cifra de las que salen es MAYOR O IGUAL QUE 5, entonces la ultima cifra de las que quedan: SE INCREMENTA EN UNA UNIDAD.

  35. Redondea un número a la cantidad de decimales especificada. Primero se debe validar el contenido de la celda antes de aplicar la función, asegurando así que el contenido se trate de un número, evitando así errores.
    Al suprimir las cifras el redondeo se realizará de la siguiente manera:
    -Si la primera cifra de las que se suprimen es MENOR QUE 5, entonces la última cifra de las que van a quedar PERMANECE IGUAL.
    -Si la primera cifra de las que se suprimen es MAYOR O IGUAL QUE 5, entonces la última cifra de las que van a quedar SE INCREMENTA EN UNA UNIDAD.

  36. si se quisiera usar esta programación para un lista de datos se puede hacer uso de la función contar filas y la programación en VBA sería:

    Sub redondear()
    u = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To u
    valor = Round(Cells(i, 1), 1)
    MsgBox (“El valor redondeado es:” & valor)
    Next
    End Sub

  37. El comando Round funciona muy bien pero hecho la prueba con rounddown y no lo reconoces, como es la forma correcta de escribirlo? De igual forma quisiera saber si existe una forma de redondear hacia arriba directamente aunque el número sea 12.6 por ejemplo.

  38. Cuando se quiere usar roundup o rounddown solo veo que se pueda hacer si se graba la macro, porque si uno escribe la función no lo reconoce. Pero que pasa si se quiere usar dentro de una programación? porque yo copie el código de la macro grabada y me volvió a salir que no la reconoce.

  39. La función ROUND es de gran uso pues sirve para reducir el numero de decimales según se requiera la información. Por ejemplo, para la calificación de notas, hallar el número de máquinas u obreros que requiere un proceso, etc.

  40. 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.

  41. Por ejemplo esta función es útil para definir tamaños de lote, también para realizar redondeos en los precios o costos.

    Sub redondear()
    cantoperarios=Round(Range(“A1:F1″))
    MsgBox (“Cantidad requerida de operarios: ” & cantoperarios)
    End Sub

  42. Ya había utilizado esta función antes, pero no para aplicar una Macro.
    Esta genial.

  43. Voy aplicar está función para mi tarea y contrucción de un UDF.

  44. Ya aplique la macro pero solo me sale el mensaje en la tabla más no se actualiza la celda. ¿Debo agregar algo más?

  45. Interesante ejemplo con el MSGBOX.

    Saludos cordiales.

  46. Empece a utilizar la función ROUND y me pareció muy interesante cuando se trabaja con cantidades que superan los 2 decimales. Por ejemplo cree una UDF llamada PROMEDIOREDONDEO, para redondear el promedio metros de avances de 3 meses a cero decimales.
    AVANCE (m):
    Enero=727.607058
    Febrero=773.3685083
    Marzo=709.302478
    Promedio=737

    Function PROMEDIOREDONDEO(Enero, Febrero, Marzo)
    Promedio = (Enero + Febrero + Marzo) / 3
    PROMEDIOREDONDEO = Round(Promedio, 0)
    End Function

  47. Esta función es usada en las universidades para saber si el alumno paso con 11, nota mínima aprobatoria en algunas universidades. Es decir, si saca 10.4 se redondearía a 10, no aprobado, y si saca 10.5 se redondea 11. Así mismo automatiza el proceso.

    Sub redondear()
    Valor = Round(Range(“A1”), 0)

    If Valor > 11 Then

    MsgBox (“El valor redondeado es : ” & Valor & “Está aprobado”)

    Else

    MsgBox (“El valor redondeado es : ” & Valor & “Está desaprobado”)

    End If

    End Sub

Deja un comentario

Required fields are marked *.


Excel Avanzado located at , Lima, Perú . Reviewed by usuarios rated: 4.7 / 5