Cómo usar Contara y CountIf Excel VBA

¿Me pueden ayudar con el código necesario para contar los datos ingresados en un rango de celdas a través de VBA en excel?

Tengo una macro que busca la última fila disponible para almacenar datos.

Código del UserForm

Private Sub CommandButton7_Click()
Sheets("REGISTROS").Select
ult1 = Cells(Rows.Count, 80).End(xlUp).Row
ult1 = ult1 + 1

  • Necesito usar la función CONTARA para la última fila con dato en un rango desde la celda #87 hasta la celda #133 y que ese dato se almacene en la última fila con dato para la columna #140.
  • Para el mismo rango de celdas necesito aplicar la función COUNTIF para que cuente todas las celdas que contengan la palabra "COMPLETO" y que ese dato se almacene en la última fila con dato para la columna #141.
  • Por último necesito hacer la resta entre las columnas #140 y #141 y que se dato se guarde en la columna #142.

Todo lo anterior se debe ejecutar al momento de presionar el botón de comando.

Encontré este código pero no sé cómo aplicarlo.

Dim UltLinea As Long
UltLinea = Range("A" & Rows.Count).End(xlUp).Row

1 respuesta

Respuesta
2

Te dejo las instrucciones necesarias. Solo debes definir tu rango en la línea del Set

'definir el rango donde se realizará el conteo, en este ejemplo A2:J140
Set rgox = Sheets("REGISTROS").Range("A2:J140")
resulta1 = Application.WorksheetFunction.CountA(rgox)
resulta2 = Application.WorksheetFunction.CountIf(rgox, "COMPLETO")
'ubicar los resultados en fila libre
Cells(ult1, 141) = resulta1
Cells(ult1, 142) = resulta2
Cells(ult1, 143) = resulta1 - resulta2

Estoy considerando que la fila donde colocarás el resultado es la que obtienes con ult1... si no es así debes ajustar las últimas líneas.

Con respecto a tu duda en la definición UltLinea, lo que se hace con esa instrucción es obtener la última fila ocupada en col A.

Si todo quedó comprendido y resuelto no olvides valorar la respuesta.

¿Te quedo algo sin comprender? ¿Necesitas alguna otra aclaración?

Si no es así y el tema esta resuelto no olvides valorar la respuesta para dar por cerrado el tema.

Sdos!

hola Elsa

Cómo puedo hacer para que me haga el conteo de la última fila con datos?  Puse la fórmula pero solo me cuenta de la fila que tiene el rango definido.

La información se almacena desde la fila 300 hacia abajo y necesito que cuando se presione el botón de comando cuente solo los datos de la última fila.

Set rgox = Sheets("REGISTROS").Range("R300:BL300")
resulta1 = Application.WorksheetFunction.CountA(rgox)
resulta2 = Application.WorksheetFunction.CountIf(rgox, "COMPLETO")
Cells(ult1, 72) = resulta1
Cells(ult1, 73) = resulta2
Cells(ult1, 74) = resulta1 - resulta2

Te separo la instrucción en 2 líneas para que sea más claro. Estoy considerando que la última fila con datos se puede obtener de la col R sino ajusta a la col que tenga datos.

ultima = Sheets("REGISTROS").Range("R" & Rows.Count).End(xlUp).RowSet rgox = Sheets("REGISTROS").Range("R" & ultima & ":BL" & ultima)

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas