{"id":16231,"date":"2021-07-28T00:09:27","date_gmt":"2021-07-28T05:09:27","guid":{"rendered":"https:\/\/www.perucontable.com\/excelcontable\/?p=16231"},"modified":"2023-11-14T22:07:14","modified_gmt":"2023-11-15T03:07:14","slug":"macro-para-contar-celdas-con-datos","status":"publish","type":"post","link":"https:\/\/www.perucontable.com\/excelcontable\/macro-para-contar-celdas-con-datos\/","title":{"rendered":"MACRO PARA CONTAR CELDAS CON DATOS"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"453\" height=\"247\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-142.png\" alt=\"\" class=\"wp-image-16232\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-142.png 453w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-142-300x164.png 300w\" sizes=\"(max-width: 453px) 100vw, 453px\" \/><\/figure><\/div>\n\n\n<p>Si trabajas con hojas de c\u00e1lculos, es obvio que necesitar\u00e1s contar las celdas que contengan datos, este puede ser un proceso molesto al hacerlo de forma manual, as\u00ed que&nbsp;<strong>crear un macro con VBA en Excel&nbsp;para contar celdas, <\/strong>es posible<strong>.<\/strong><\/p>\n\n\n\n<p>Cuando trabajamos con macros en Excel y dependemos de que el usuario ingrese valores en algunas celdas de nuestra hoja, es com\u00fan vernos en la necesidad de&nbsp;<strong>contar las celdas con datos<\/strong>&nbsp;de manera que podamos hacer las validaciones pertinentes. En esta ocasi\u00f3n te mostrar\u00e9 un par de &nbsp;alternativas que tenemos para realizar ese tipo de cuenta desde VBA.<\/p>\n\n\n\n<p>Para realizar el primer ejemplo de este art\u00edculo utilizar\u00e9 los datos capturados en el rango A1:C10 y adem\u00e1s necesitar\u00e9 algunos botones de comando ActiveX que insertar\u00e9 desde la&nbsp;ficha Programador&nbsp;y que ser\u00e1n los encargados de ejecutar el c\u00f3digo VBA desde su evento click.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"817\" height=\"439\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-143.png\" alt=\"\" class=\"wp-image-16233\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-143.png 817w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-143-300x161.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-143-768x413.png 768w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-143-696x374.png 696w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-143-782x420.png 782w\" sizes=\"(max-width: 817px) 100vw, 817px\" \/><\/figure><\/div>\n\n\n<h2><strong>LA PROPIEDAD COUNT<\/strong><\/h2>\n\n\n\n<p>Para nuestro primer ejemplo utilizar\u00e9 el objeto&nbsp;<em>Range<\/em>&nbsp;y una de sus propiedades conocida como&nbsp;<em>Count<\/em>&nbsp;que nos indicar\u00e1 la cantidad exacta de celdas que conforman el rango indicado. Considera el siguiente c\u00f3digo VBA:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"703\" height=\"96\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-144.png\" alt=\"\" class=\"wp-image-16234\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-144.png 703w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-144-300x41.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-144-696x96.png 696w\" sizes=\"(max-width: 703px) 100vw, 703px\" \/><\/figure><\/div>\n\n\n<p>El c\u00f3digo ha sido insertado en el evento&nbsp;<em>Click<\/em>&nbsp;del bot\u00f3n de comando y mostrar\u00e1 un cuadro de di\u00e1logo con la cantidad de celdas del rango. As\u00ed que, al pulsar el bot\u00f3n obtendr\u00e9 el siguiente resultado:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"694\" height=\"319\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-145.png\" alt=\"\" class=\"wp-image-16239\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-145.png 694w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-145-300x138.png 300w\" sizes=\"(max-width: 694px) 100vw, 694px\" \/><\/figure><\/div>\n\n\n<p>Es importante recordar que la propiedad&nbsp;<em>Count<\/em>&nbsp;funcionar\u00e1 correctamente mientras el rango no exceda de 2,147,483,647 de celdas. Si necesitas contar una cantidad mayor de celdas, entonces ser\u00e1 necesario utilizar la propiedad&nbsp;<em>CountLarge<\/em>.<\/p>\n\n\n\n<p>Con este c\u00f3digo hemos logrado contar la totalidad de celdas dentro de un rango espec\u00edfico, pero para poder&nbsp;<strong>contar las celdas con datos<\/strong>&nbsp;tenemos que restar aquellas celdas que est\u00e1n vac\u00edas y eso ser\u00e1 precisamente lo que haremos en la siguiente secci\u00f3n.<\/p>\n\n\n\n<h2><strong>EL M\u00c9TODO SPECIALCELLS<\/strong><\/h2>\n\n\n\n<p>Una manera de conocer las celdas que est\u00e1n vac\u00edas es utilizar el objeto&nbsp;<em>Range<\/em>&nbsp;y su m\u00e9todo&nbsp;<em>SpecialCells<\/em>&nbsp;el cual recibe un par\u00e1metro para indicar el tipo de celdas que deseamos obtener. Un posible valor para dicho par\u00e1metro es&nbsp;<em>xlCellTypeBlanks<\/em>&nbsp;que simboliza las celdas en blanco, as\u00ed que podemos utilizar el siguiente c\u00f3digo VBA:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"856\" height=\"99\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-146.png\" alt=\"\" class=\"wp-image-16240\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-146.png 856w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-146-300x35.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-146-768x89.png 768w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-146-696x80.png 696w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><\/figure><\/div>\n\n\n<p>Al ejecutar este c\u00f3digo obtendremos un resultado como el siguiente:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"691\" height=\"342\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-147.png\" alt=\"\" class=\"wp-image-16241\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-147.png 691w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-147-300x148.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-147-324x160.png 324w\" sizes=\"(max-width: 691px) 100vw, 691px\" \/><\/figure><\/div>\n\n\n<p>Ahora ya conoces el funcionamiento de la propiedad&nbsp;<em>Count<\/em>&nbsp;y del m\u00e9todo&nbsp;<em>SpecialCells<\/em>&nbsp;as\u00ed que podremos crear f\u00e1cilmente una&nbsp;<strong>macro para contar las celdas con datos<\/strong>.<\/p>\n\n\n\n<h2><strong>MACRO PARA CONTAR CELDAS CON DATOS<\/strong><\/h2>\n\n\n\n<p>Para poder contar las celdas que contienen datos dentro de un rango espec\u00edfico podemos restar las celdas en blanco del total de las celdas del rango. Eso lo podemos lograr con el siguiente c\u00f3digo:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"91\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-148-1024x91.png\" alt=\"\" class=\"wp-image-16242\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-148-1024x91.png 1024w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-148-300x27.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-148-768x69.png 768w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-148-696x62.png 696w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-148-1068x95.png 1068w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-148.png 1177w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Observa que no he introducido ninguna instrucci\u00f3n nueva sino que solamente he utilizado la propiedad&nbsp;<em>Count<\/em>&nbsp;para obtener el total de celdas y posteriormente he restado las celdas vac\u00edas con el m\u00e9todo&nbsp;<em>SpecialCells<\/em>. Al ejecutar este c\u00f3digo obtenemos el siguiente resultado:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"680\" height=\"392\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-149.png\" alt=\"\" class=\"wp-image-16243\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-149.png 680w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-149-300x173.png 300w\" sizes=\"(max-width: 680px) 100vw, 680px\" \/><\/figure><\/div>\n\n\n<p>El rango A1:C10 est\u00e1 formado por 30 celdas, de las cuales 5 est\u00e1n vac\u00edas, as\u00ed que solo existen 25 celdas con datos por lo que el resultado de nuestra macro es correcto.<\/p>\n\n\n\n<h2><strong>M\u00c1S SOBRE EL M\u00c9TODO SPECIALCELLS<\/strong><\/h2>\n\n\n\n<p>En este primer ejemplo he utilizado el m\u00e9todo&nbsp;<em>SpecialCells<\/em>&nbsp;para contar las celdas en blanco de un rango pero es posible utilizar dicho m\u00e9todo para contar celdas con ciertos tipos de dato especiales, como las celdas que contienen f\u00f3rmulas o las celdas que tienen comentarios. Lo \u00fanico que debes hacer es indicar el valor adecuado como su par\u00e1metro:<\/p>\n\n\n\n<ul>\n<li><em>xlCellTypeAllFormatConditions<\/em>: Celdas de cualquier formato<\/li>\n\n\n\n<li><em>xlCellTypeAllValidation<\/em>: Celdas que contienen criterios de validaci\u00f3n<\/li>\n\n\n\n<li><em>xlCellTypeBlanks<\/em>: Celdas vac\u00edas<\/li>\n\n\n\n<li><em>xlCellTypeComments<\/em>: Celdas que contienen comentarios<\/li>\n\n\n\n<li><em>xlCellTypeConstants<\/em>: Celdas que contienen constantes<\/li>\n\n\n\n<li><em>xlCellTypeFormulas<\/em>: Celdas que contienen f\u00f3rmulas<\/li>\n\n\n\n<li><em>xlCellTypeLastCell<\/em>: La \u00faltima celda del rango usado<\/li>\n\n\n\n<li><em>xlCellTypeSameFormatConditions<\/em>: Celdas con el mismo formato<\/li>\n\n\n\n<li><em>xlCellTypeSameValidation<\/em>: Celdas con los mismos criterios de validaci\u00f3n<\/li>\n\n\n\n<li><em>xlCellTypeVisible<\/em>: Todas las celdas visibles<\/li>\n<\/ul>\n\n\n\n<p>En nuestro ejemplo utilizamos el valor&nbsp;<em>xlCellTypeBlanks<\/em>&nbsp;para contar las celdas en blanco de un rango, pero puedes hacer la prueba con los diferentes valores disponibles para el m\u00e9todo&nbsp;<em>SpecialCells<\/em>.<\/p>\n\n\n\n<h2><strong>LA FUNCI\u00d3N CONTARA<\/strong><\/h2>\n\n\n\n<p>Otra alternativa que tenemos para&nbsp;<strong>contar celdas con datos desde VBA<\/strong>&nbsp;es utilizar la funci\u00f3n CONTARA que nos devolver\u00e1 la cantidad de celdas que no est\u00e1n vac\u00edas. Sin embargo, debes recordar que para utilizar una funci\u00f3n de Excel desde VBA es indispensable utilizar su nombre en ingl\u00e9s. El nombre en ingl\u00e9s de la funci\u00f3n CONTARA es COUNTA.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"773\" height=\"111\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-150.png\" alt=\"\" class=\"wp-image-16244\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-150.png 773w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-150-300x43.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-150-768x110.png 768w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-150-696x100.png 696w\" sizes=\"(max-width: 773px) 100vw, 773px\" \/><\/figure><\/div>\n\n\n<p>Como argumento de la funci\u00f3n COUNTA he indicado el mismo rango de celdas A1:C10 y como resultado obtenemos la cuenta de las celdas que contienen datos.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"624\" height=\"304\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-152.png\" alt=\"\" class=\"wp-image-16247\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-152.png 624w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-152-300x146.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/07\/image-152-533x261.png 533w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/figure><\/div>\n\n\n<p>Este resultado concuerda con el del primer ejemplo, as\u00ed que ahora ya conoces las dos alternativas para contar las celdas con datos desde VBA.<\/p>\n\n\n\n<p><strong>Art\u00edculo que te recomendamos leer:<\/strong><br><strong><a href=\"https:\/\/www.perucontable.com\/excelcontable\/como-encontrar-datos-repetidos-en-dos-columnas-de-excel\/\" data-type=\"URL\" data-id=\"https:\/\/www.perucontable.com\/excelcontable\/como-encontrar-datos-repetidos-en-dos-columnas-de-excel\/\">C\u00d3MO ENCONTRAR DATOS REPETIDOS EN DOS COLUMNAS DE 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>Si trabajas con hojas de c\u00e1lculos, es obvio que necesitar\u00e1s contar las celdas que contengan datos, este puede ser un proceso molesto al hacerlo de forma manual, as\u00ed que&nbsp;crear un macro con VBA en Excel&nbsp;para contar celdas, es posible. Cuando trabajamos con macros en Excel y dependemos de que el usuario ingrese valores en algunas [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":16272,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[108,67,25],"tags":[],"yst_prominent_words":[334,336,275,346,320],"_links":{"self":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16231"}],"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=16231"}],"version-history":[{"count":6,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16231\/revisions"}],"predecessor-version":[{"id":17456,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16231\/revisions\/17456"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/media\/16272"}],"wp:attachment":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/media?parent=16231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/categories?post=16231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/tags?post=16231"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/yst_prominent_words?post=16231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}