Como automatizo mis registros automáticamente como CONTARSI con macros

Tengo un libro de trabajo que consta de 2 hojas, la primera se llama "Datos", aquí es donde tengo mis registros almacenados de tal forma que pueden ir creciendo como también disminuir y la otra hoja se llama "Resultado" aquí es donde quiero que me aparezcan los resultados así como se usa la función CONTARSI, así como muestro en las hojas adjuntas.

Esta es mi hoja "Datos", aquí almaceno toda mi información la cual debe ser procesada con macros.

Y esta otra hoja "Resultado", es donde debe aparecerme los datos procesados al momento de darle click al boto procesar en la hoja Datos.

2 Respuestas

Respuesta
1

No te puedo ayudar con macro pero no es necesario para automatizar los resultados.

En c3 pones:

=contar.si(Datos!c:c,b3)

y para los demás solo necesitas poner en d3:

=contar.si.conjunto(Datos!$c:$c,$b3,Datos!$d:$d,d$2)

y arrastras la fórmula a las demás.
Aunque agregues o quites más datos la fórmula actualizará tus resultados.

Respuesta
1

Este es el resultado de la macro

y esta es la macro

Sub contar_cursos()
Set hd = Worksheets("datos")
Set hr = Worksheets("resultados")
hr.Cells.Clear
Set cursos = hd.Range("a2").CurrentRegion
With cursos
    FILAS = .Rows.Count
    col = .Columns.Count
    Set cursos = .Rows(2).Resize(FILAS - 1)
    Set resultados = hr.Range("a2").Resize(FILAS - 1, 6)
End With
With resultados
        .Columns(2).Value = cursos.Columns(3).Value
        .RemoveDuplicates Columns:=2
        Set resultados = .CurrentRegion
        .Select
        col = .Columns.Count
        FILAS = .Rows.Count
        celda = .Cells(1, 2).Address(0, 0)
        Range("A2").Value = 1
        Range("A2").AutoFill Destination:=Range(.Columns(1).Address), Type:=xlFillSeries
        .Columns(3).Formula = "=countif(datos!" & cursos.Columns(3).Address & "," & celda & ")"
        .Columns(4).Formula = "=countifs(datos!" & cursos.Columns(3).Address & "," & celda & _
        ",datos!" & cursos.Columns(4).Address & "," & """aprobado""" & ")"
        .Columns(5).Formula = "=countifs(datos!" & cursos.Columns(3).Address & "," & celda & _
        ",datos!" & cursos.Columns(4).Address & "," & """desaprobado""" & ")"
        .Columns(6).Formula = "=countifs(datos!" & cursos.Columns(3).Address & "," & celda & _
        ",datos!" & cursos.Columns(4).Address & "," & """nsp""" & ")"
        .Cells(FILAS + 1, 3).Resize(1, col + 2).Formula = "=sum(" & .Columns(3).Address(0, 0) & ")"
        .Cells(FILAS + 1, 2) = "TOTAL"
        .Rows(FILAS + 1).Resize(1, 6).Font.Bold = True
        .Rows(FILAS + 1).Resize(1, 6).Interior.ColorIndex = 42
        .CurrentRegion.Value = .CurrentRegion.Value
        With Range("a1").Resize(1, 6)
            .Value = Array("NO", "CURSO", "CANT", "APROBADOS", "DESAPROBADOS", "NSP")
            .Font.Bold = True
            .Interior.ColorIndex = 42
        End With
        .CurrentRegion.EntireColumn.AutoFit
End With
Set datos = Nothing: Set resultados = Nothing
Set hd = Nothing: Set hr = Nothing
End Sub

¡Gracias! 

Experto JAMES BOND, quedo super la macro como yo quería me va servir de mucho y así estar evitando formulando con CONTAR.SI cuando aumente o disminuya registros, muchísimas gracias.

Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas