Jump to content

Archived

This topic is now archived and is closed to further replies.

ejidense

Como usar countif en un bucle for next

Recommended Posts

Hola a todos,

Recurro a este foro porque estoy intentando hacer una pequeña macro para unas actividades que tengo que realizar en el trabajo y soy muy muy novato en esto.

El caso es que estoy haciendo una macro y me encuentro que cuando trato de hacer un bucle for next en el que incluyo un countif me da error, lo que me trae loco es que si no hago el bucle y sustituyo la variable i por la celda que quiero si me lo hace bien, pero al intentar hacer el bucle me da el error, y no tengo ni idea de que ocurre.

La macro lo que pretende es contar el número de veces que aparece H por fila, y pone ese valor en la fila de la columna B que le corresponde.

 

Alguien podría hecharle un vistazo por favor??

Muchas gracias de antemano.

 

Este es el código que llevo hecho:

Sub prueba()

'Declaración de Variables

Dim i As Integer
Dim plots As Integer

'Crea copia llamada Prueba y abre esa hoja

Worksheets("Sheet1").Copy After:=Worksheets(1)

Worksheets(2).Name = "Prueba"

Worksheets("Prueba").Select


'Cuenta el número de plots que hay


plots = WorksheetFunction.CountA(ActiveSheet.Range("a2", ActiveSheet.Range("a2").End(xlDown)))


'Número de H por plot


For i = 2 To plots


Worksheets("Prueba").Cells(i, 2).Value = Application.WorksheetFunction.CountIf(Worksheets("Prueba").Range("di", Worksheets("Prueba").Range("di").End(xlToRight)), "H")

Next i

End Sub

 

Share this post


Link to post
Share on other sites

Hola buenos días.

Prueba con este código, si entendí, hace lo que quieres.

Sub prueba()

'Declaración de Variables


 Dim plots As Integer

'Crea copia llamada Prueba y abre esa hoja

Worksheets("Sheet1").Copy After:=Worksheets(1)

Worksheets(2).Name = "Prueba"

Worksheets("Prueba").Select

 

For x = 2 To Hoja1.Range("A" & Rows.Count).End(xlUp).Row
   
    For Each celda In Range("A" & x)
        plots = Len(celda) - Len(Replace(celda, "H", ""))
        ActiveSheet.Range("B" & x).Value = plots
    Next
Next
 


End Sub

 

Saludos

Share this post


Link to post
Share on other sites

Hola,

Muchas gracias por responder. 

 

Lo cierto es que probe el código que publicaste pero no me funcionó.

Al final lo solucioné de la siguiente manera:

 

Sub Contanto_H()

'Declaración de Variables

Dim i As Integer, j As Integer
Dim plots As Integer, Marcadores As Integer


''''CREO UNA NUEVA HOJA LLAMADA COPIA EN LA QUE ESTÁ COPIADA LA PÁGINA SHEET INTEGRAMENTE

Worksheets("Sheet1").Copy After:=Worksheets(1)

Worksheets(2).Name = "Prueba"

Worksheets("Prueba").Select


''''CUENTA EL NÚMERO DE PLOTS TOTAL


plots = WorksheetFunction.CountA(ActiveSheet.Range("a2", ActiveSheet.Range("a2").End(xlDown)))


''''CUENTA EL NÚMERO DE MARCADORES TOTAL

Marcadores = WorksheetFunction.CountA(ActiveSheet.Range("d1", ActiveSheet.Range("d1").End(xlToRight)))


''''CUENTA NÚMERO DE H POR PLOT


For i = 2 To plots + 1


Worksheets("Prueba").Cells(i, 2).Value = Application.CountIf(Rows(i), "H")

Next i
 

 

Saludos y muchas gracias de nuevo.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




×
×
  • Create New...

Important Information

Privacy Policy