Cuenta valores dependiendo una condición







Es posible que alguna vez hayas querido contar valores dependiendo de una condición o criterio, es decir si es mayor  o menor que cierto valor es mayor o igual, etc., en las siguientes líneas pretendo mostrarte como usar esta función de Excel aplicada a una macro de VBA.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.




  

WorksheetFunction tiene como finalidad ejecutar casi todas las funciones que trae incorporadas Excel, pudiendo incorporarse en una macro de VBA y usar estas funciones, esto se viene explicando en varios post anteriores; en el link encontrarás la explicación acerca del tema WorksheetFunction funciones de Excel en VBA y un listado de funciones de Excel en listado de todas las funciones que se pueden ejecutar desde una macro de VBA.


El presente ejemplo de macro utiliza WorksheetFunction.CountIf que permite contar datos dependiendo de una condición, existen otros post relacionados con WorksheetFunctión como por ejemplo: como se utiliza la función VLookup o BuscarVen Funciones de Excel descripción y traducción al inglés y otros idiomas, encontrarás listadas y con una breve explicación sobre que realiza cada una de las funciones de Excel, en como utilizar BuscarV se explica la utilización de dicha función en Excel, otras funciones que te pueden interesar son Vlookup o BuscarVSumIfs o SumIf; si lo que requieres es contar solamente valores mira este link, ahora si requieres contar celdas en blanco o vacías mira este otro link.


Siguiendo con el tema tratado, la función WorksheetFunction.CountIf o Cuenta dependiendo de criterios, su sintaxis es la siguiente:

La función WorksheetFunction.CountIf se utiliza para contar la cantidad de valores que cumplen una condición determinada; la sintaxis es la siguiente:

WorksheetFunction.CountIf(Arg1, Arg2)

El significado de los parámetros son:

Arg1: es un dato obligatorio, siendo el rango de celdas que se deben evaluar según los criterios especificados.

Arg2: es un dato también obligatorio, se refiere a los criterios en forma de número, expresión o texto, que determinan las celdas que se deben contar, los criterios se pueden expresar como 12, "12", "<12" o "palmeras". En los criterios se pueden usar caracteres comodín (?) y (*); donde el "?" corresponde a un solo caracter y el "*" a una cadena de caracteres, si lo que se desea buscar es (?) o (*) se debe escribir un tilde (~) antes del caracter.


En este post denominado  WorksheetFunction.CountIf muestro como se incorpora en una macro la función de Excel explicada aquí, permitiendo contar celdas que concuerdan con un criterio dado, ello se realiza en un rango que previamente se ha establecido; en este ejemplo se coloca dicho resultado mediante macro en una celda; primero se determinar cual es la última fila con datos mediante la variable "uf", esto es a los fines de armar el rango de la matriz donde se buscarán y contarán los valores; posteriormente se aplica la función CountIf o contar valores dependiendo de criterios.

El siguiente código es el que permite contar los valores que cumplen un criterio especificado previamente y a su vez escribir el resultado en la celda que es variable y esta dada por la última fila con datos y la columna B.

Cells(uf, "B") = Application.WorksheetFunction.CountIf(Range("B2" & ":B" & uf - 1), "> 50")

El rango se arma desde la celda B2 hasta la columna B y última fila con datos, siendo el criterio a tener en cuenta, que el valor a contar sea > 50.

Como se puede observar al final de la macro, por último aparece un mensaje a través de un msgbox que muestra la cantidad de valores contados, podrás descargar el ejemplo en forma GRATUITA desde el link que se encuentra en el final del post.

Finalizando, este ejemplo de macro que utiliza WorksheetFunction CountIf o Cuenta mediante criterios o condición, se puede descargar desde el link del final de este post, una vez descargado el ejemplo se presiona el botón que dice "Macro" y se ejecuta la macro que cuenta las celdas dependiendo un criterio, en el caso del ejemplo; el criterio para que un valore sea contado es que sea mayor que cincuenta (> 50); para probar la macro se cambian los datos y el resultado se volverá a calcular.

En el vídeo a continuación podrás observar una explicación más detallada y gráfica, solicito suscribas al canal de You Tube para seguir recibiendo GRATIS ejemplos de macros en tu correo, útiles para automatizar Excel y disminuir tu trabajo; podrás suscribir al blog desde la parte superior derecha de ésta página, sólo debes ingresar tu casilla de correo.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.




Código que se inserta en un módulo



Sub CuentaCeldasCondicion()
Application.ScreenUpdating = False
On Error Resume Next
DisplayAlerts = False
Dim uf As String
Dim fila As Integer
fila = 2
uf = Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row
Cells(uf, "B") = Application.WorksheetFunction.CountIf(Range("B2" & ":B" & uf - 1), "> 50")
Range("B25").NumberFormat = "#,##0.00"
MsgBox ("Hay " & Cells(25, "B") & " valores en el rango"), vbInformation, "AVISO"
DisplayAlerts = True
Application.ScreenUpdating = True
End Sub




Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.



If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends