Como agregar un rango infinito en countIFS en código macro

Estoy tratando de contar unos datos según ciertos criterios, el problema al usar countIfs es que no tengo el rango definido, ya que el rango se encuentra creciendo constantemente.

Lo que intenté fue esto y no me resultó:

  MsgBox Application.WorksheetFunction.CountIfs(Range("Criticidad"), "CRÍTICA", Range("Máquina operativa o no operativa"), "SI")

Pd: Range("Criticidad") --- Es una de las columnas que no tengo el rango determinado

, Range("Máquina operativa o no operativa") -- Es la otra columna donde no tengo el rango determinado.

Les agredecería su ayuda

3 Respuestas

Respuesta
1

Para que definas cuantas filas son, define que columna tiene que estar con dato siempre. Luego almacena el numero de filas en una variable y luego concatenalo

dim UltimaFila as string

UltimaFila ="Columna"+ cstr(Worksheets("Hoja").Range("columna").End(xlDown).Row )

Respuesta
2

H o la: Lo más simple es que cambies el nombre del rango por la columna, por ejemplo:

    MsgBox WorksheetFunction.CountIfs(Range("E:E"), "CRÍTICA", Range("F:F"), "SI")

La otra opción, suponiendo que tu primer rango está en la columna E y el segundo en la columna F y los datos empiezan en la fila 3, entonces buscamos el último dato de la columna E, y establecemos los rangos de E y de F:

    u = Range("E" & Rows.Count).End(xlUp).Row
    Set r1 = Range("E3:E" & u)
    Set r2 = Range("F3:F" & u)
    MsgBox WorksheetFunction.CountIfs(r1, "CRÍTICA", r2, "SI")

Cualquiera de las 2 opciones funciona sin conocer el rango definido.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
Respuesta
1

.03.02.17

Buenos días, Felipe

Te ofrezco una solución que resuelve la incógnita de la dimensión de esos rangos: Convertirlos de nombres definidos standard a rangos dinámicos.

Es decir: un rango con nombre definido que se adapte a la cantidad de lineas que ocupe en cada momento.

En el cuadro de definición de nombre de rango (Fórmulas - Administrador de Nombres o Ctrl + F3), haz click en el botón "Nuevo" coloca el nombre que deseas para tu nombre y en "Se refiere a:" coloca ésta fórmula:

=DESREF(Hoja1!A2;0;0;CONTARA('Hoja1!A2:A6000);1)

Quedaría algo así como esto:

Luego, Aceptar.

Listo, Criticidad será tan alto como filas haya en ese rango, automáticamente. Sin macros, sin intervención humana.

Notarás que cuenta las filas hasta la 6000, si tu base fuere a tener más de esa cantidad de líneas aumenta ese número.

Para que calcule los limites correctamente, no debe haber celdas ocupadas debajo de la última real de la base.

Desde luego, repite el procedimiento para el rango "Máquina operativa o no operativa"

Espero que te sirva -y, en tal caso, agradeceré que califiques mi contribución- o escribeme de nuevo aquí, si necesitas más apoyo con esto.

Un abrazo

Fernando

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas