{"id":16436,"date":"2021-08-14T19:17:51","date_gmt":"2021-08-15T00:17:51","guid":{"rendered":"https:\/\/www.perucontable.com\/excelcontable\/?p=16436"},"modified":"2023-11-14T20:20:12","modified_gmt":"2023-11-15T01:20:12","slug":"como-redondear-con-vba-en-excel","status":"publish","type":"post","link":"https:\/\/www.perucontable.com\/excelcontable\/como-redondear-con-vba-en-excel\/","title":{"rendered":"\u00bfC\u00d3MO REDONDEAR CON VBA EN EXCEL?"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"395\" height=\"254\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-75.png\" alt=\"\" class=\"wp-image-16437\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-75.png 395w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-75-300x193.png 300w\" sizes=\"(max-width: 395px) 100vw, 395px\" \/><\/figure><\/div>\n\n\n<p>El redondeo de n\u00fameros es muy com\u00fan en las hojas de c\u00e1lculo y en ocasiones necesitamos&nbsp;<strong>redondear en VBA<\/strong>&nbsp;al programar una funci\u00f3n UDF para obtener alg\u00fan c\u00e1lculo espec\u00edfico. Para implementar el redondeo de n\u00fameros utilizaremos la funci\u00f3n ROUND la cual revisaremos con detenimiento en esta ocasi\u00f3n.<\/p>\n\n\n\n<h2><strong>NO ES LO MISMO REDONDEAR QUE ROUND<\/strong><\/h2>\n\n\n\n<p>Antes de iniciar debo decir que es desafortunado encontrar algunos art\u00edculos en Internet que hablan de&nbsp;<strong>c\u00f3mo redondear con VBA<\/strong>&nbsp;y sin embargo hacen una mezcla de la funci\u00f3n REDONDEAR de Excel con la funci\u00f3n ROUND de VBA. Es muy importante que todo usuario de Excel sepa que las funciones VBA y las funciones de Excel son diferentes y aunque algunas de ellas hacen cosas muy similares, no significa que son lo mismo y lo voy a demostrar a continuaci\u00f3n.<\/p>\n\n\n\n<p>En la siguiente imagen puedes observar en la columna B el comportamiento de la funci\u00f3n de Excel REDONDEAR sobre el conjunto de n\u00fameros de la columna A y en la columna C podr\u00e1s observar los resultados devueltos por la funci\u00f3n ROUND:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.exceltotal.com\/wp-content\/uploads\/2014\/08\/como-redondear-con-VBA-en-excel-01.png\" alt=\"C\u00f3mo redondear con VBA en Excel\"\/><\/figure><\/div>\n\n\n<p>Pon especial atenci\u00f3n al resultado devuelto en la fila 7 de la hoja. La funci\u00f3n REDONDEAR hizo el redondeo del n\u00famero hacia arriba mientras que la funci\u00f3n ROUND lo hizo hacia abajo. Esta es una prueba evidente de que las funciones son totalmente diferentes.<\/p>\n\n\n\n<p>Tal vez este malentendido se ve ayudado por el hecho de que, si tienes Excel en ingl\u00e9s, ambas funciones se llamar\u00e1n ROUND y podr\u00edas pensar que, si tienen el mismo nombre, entonces son la misma funci\u00f3n. Pero ya que t\u00fa est\u00e1s en el camino para convertirte en un experto en Excel, deber\u00e1s distinguir muy bien entre las funciones de Excel y las funciones VBA.<\/p>\n\n\n\n<h2><strong>LA FUNCI\u00d3N ROUND EN VBA<\/strong><\/h2>\n\n\n\n<p>La funci\u00f3n ROUND en VBA devuelve un n\u00famero redondeado a una cantidad especificada de d\u00edgitos y para ello cuenta con dos argumentos:<\/p>\n\n\n\n<ul>\n<li><strong>Number<\/strong>&nbsp;(<em>Obligatorio<\/em>): La expresi\u00f3n num\u00e9rica que ser\u00e1 redondeada.<\/li>\n\n\n\n<li><strong>NumDigitsAfterDecimal<\/strong>&nbsp;(<em>Opcional<\/em>): La cantidad de decimales a las que ser\u00e1 redondeada la expresi\u00f3n num\u00e9rica. Si se omite este par\u00e1metro, se devolver\u00e1 un valor entero.<\/li>\n<\/ul>\n\n\n\n<p>En la siguiente imagen puedes observar el comportamiento de la funci\u00f3n ROUND con diferentes valores para su segundo argumento. Para la columna B he omitido por completo el segundo argumento pero en las columnas C y D he colocado los valores 1 y 2 respectivamente.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.exceltotal.com\/wp-content\/uploads\/2014\/08\/como-redondear-con-VBA-en-excel-02.png\" alt=\"Redondear en VBA en Excel\"\/><\/figure><\/div>\n\n\n<h2><strong>REDONDEAR AL N\u00daMERO PAR M\u00c1S CERCANO<\/strong><\/h2>\n\n\n\n<p>Cuando hablamos de redondear n\u00fameros siempre tenemos alguna postura respecto a los n\u00fameros que terminan con el decimal 5, ya sea que necesitamos que el n\u00famero sea redondeado hacia arriba o hacia abajo, pero la funci\u00f3n ROUND no tiene ninguno de esos comportamientos.<\/p>\n\n\n\n<p>La funci\u00f3n ROUND implementa una l\u00f3gica conocida como redondeo al n\u00famero par m\u00e1s cercano es decir, si el \u00faltimo decimal es un 5, el redondeo se har\u00e1 hacia el n\u00famero par m\u00e1s cercano ya sea hacia arriba o hacia abajo. Para dejar en claro este comportamiento, en la siguiente imagen podr\u00e1s observar el resultado de la funci\u00f3n al redondear este tipo de n\u00fameros:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.exceltotal.com\/wp-content\/uploads\/2014\/08\/como-redondear-con-VBA-en-excel-03.png\" alt=\"Redondear decimales en VBA\"\/><\/figure><\/div>\n\n\n<p>Todos los n\u00fameros de la columna A terminan con el decimal 5 y todos los n\u00fameros redondeados de la columna B terminan con un n\u00famero par. Observa que el n\u00famero 2.15 es redondeado hacia arriba, mientras que el n\u00famero 2.25 es redondeado hacia abajo, lo cual comprueba que la funci\u00f3n ROUND utiliza la l\u00f3gica de redondeo al n\u00famero par m\u00e1s cercano.<\/p>\n\n\n\n<p>Es de vital importancia que recuerdes este comportamiento al utilizar la funci\u00f3n ROUND ya que muchos usuarios piensan que est\u00e1n obteniendo resultados incorrectos aunque en realidad ese sea el comportamiento natural de la funci\u00f3n.<\/p>\n\n\n\n<h2><strong>REDONDEAR HACIA ARRIBA EN VBA<\/strong><\/h2>\n\n\n\n<p>SI lo que necesitas es redondear el decimal 5 hacia arriba, tendr\u00edas la opci\u00f3n de crear tu propia funci\u00f3n UDF, pero no hay necesidad de hacerlo ya que podemos utilizar la funci\u00f3n REDONDEAR de Excel desde nuestro c\u00f3digo VBA. Para hacer eso debemos utilizar la siguiente instrucci\u00f3n:<\/p>\n\n\n\n<p><code><strong>Application.WorksheetFunction.Round<\/strong><\/code><\/p>\n\n\n\n<p>Las funciones de Excel pueden ser accedidas desde VBA a trav\u00e9s del objeto&nbsp;<em>WorksheetFunction<\/em>&nbsp;el cual contiene todas las funciones de la hoja de c\u00e1lculo y la \u00fanica condici\u00f3n es que tendremos que especificar su nombre en ingl\u00e9s. El siguiente c\u00f3digo utiliza la funci\u00f3n ROUND de VBA en la columna B y la funci\u00f3n REDONDEAR (ROUND) de Excel en la columna C para redondear los n\u00fameros de la columna A:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"904\" height=\"188\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-76.png\" alt=\"\" class=\"wp-image-16438\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-76.png 904w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-76-300x62.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-76-768x160.png 768w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-76-696x145.png 696w\" sizes=\"(max-width: 904px) 100vw, 904px\" \/><\/figure><\/div>\n\n\n<p>En la siguiente imagen puedes ver los resultados de este c\u00f3digo y podr\u00e1s notar que la columna C hace el redondeo hacia arriba.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.exceltotal.com\/wp-content\/uploads\/2014\/08\/como-redondear-con-VBA-en-excel-04.png\" alt=\"C\u00f3mo redondear hacia arriba en VBA\"\/><\/figure><\/div>\n\n\n<p>Observa que los n\u00fameros de la columna C terminan en par o impar, ya que la funci\u00f3n de Excel har\u00e1 el redondeo del decimal 5 siempre hacia arriba mientras que la funci\u00f3n de VBA lo har\u00e1 hacia el n\u00famero par m\u00e1s cercano.<\/p>\n\n\n\n<h2><strong>REDONDEAR HACIA ABAJO EN VBA<\/strong><\/h2>\n\n\n\n<p>Si alguna vez necesitas hacer el redondeo del decimal 5 hacia abajo, entonces ser\u00e1 necesario aplicar un truco a la funci\u00f3n REDONDEAR de Excel y que ser\u00e1 restar una cantidad muy peque\u00f1a al n\u00famero antes de redondearlos. Por ejemplo, a nuestro c\u00f3digo anterior agregar\u00e9 una nueva l\u00ednea para hacer el redondeo hacia abajo en la columna D:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1025\" height=\"218\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-77.png\" alt=\"\" class=\"wp-image-16439\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-77.png 1025w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-77-300x64.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-77-768x163.png 768w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-77-696x148.png 696w\" sizes=\"(max-width: 1025px) 100vw, 1025px\" \/><\/figure><\/div>\n\n\n<p>Observa que estoy restando el valor 0.000001 al n\u00famero que voy a redondear y como consecuencia obtendr\u00e9 un redondeo hacia abajo. La \u00fanica condici\u00f3n es que el valor a restar debe tener muchos m\u00e1s decimales que los n\u00fameros que est\u00e1s redondeando de manera que no afecte el resultado final.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.exceltotal.com\/wp-content\/uploads\/2014\/08\/como-redondear-con-VBA-en-excel-05.png\" alt=\"Redondeo de n\u00fameros en VBA\"\/><\/figure><\/div>\n\n\n<p>En estos ejemplos se ha explicado c\u00f3mo utilizar la funci\u00f3n ROUND de VBA y tambi\u00e9n c\u00f3mo llamar a la funci\u00f3n REDONDEAR (ROUND) de Excel desde el mismo c\u00f3digo VBA. Nada impide que utilices el objeto&nbsp;<em>WorksheetFunction<\/em>&nbsp;para llamar el resto de&nbsp;funciones para redondear de Excel&nbsp;y aprovechar su comportamiento desde tu c\u00f3digo VBA.<\/p>\n\n\n\n<p><strong>Art\u00edculo que te recomendamos leer:<\/strong><br><strong><a href=\"https:\/\/www.perucontable.com\/excelcontable\/aprende-como-insertar-varias-filas-en-excel\/\" data-type=\"URL\" data-id=\"https:\/\/www.perucontable.com\/excelcontable\/aprende-como-insertar-varias-filas-en-excel\/\">APRENDE C\u00d3MO INSERTAR VARIAS FILAS EN EXCEL<\/a><\/strong><\/p>\n\n\n\n<p><strong>\u00bfQu\u00e9 te pareci\u00f3 nuestra blog? Com\u00e9ntanos.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El redondeo de n\u00fameros es muy com\u00fan en las hojas de c\u00e1lculo y en ocasiones necesitamos&nbsp;redondear en VBA&nbsp;al programar una funci\u00f3n UDF para obtener alg\u00fan c\u00e1lculo espec\u00edfico. Para implementar el redondeo de n\u00fameros utilizaremos la funci\u00f3n ROUND la cual revisaremos con detenimiento en esta ocasi\u00f3n. NO ES LO MISMO REDONDEAR QUE ROUND Antes de iniciar [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":16464,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[108,2,67,25],"tags":[],"yst_prominent_words":[122,458,217],"_links":{"self":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16436"}],"collection":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/comments?post=16436"}],"version-history":[{"count":4,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16436\/revisions"}],"predecessor-version":[{"id":17454,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16436\/revisions\/17454"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/media\/16464"}],"wp:attachment":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/media?parent=16436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/categories?post=16436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/tags?post=16436"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/yst_prominent_words?post=16436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}