Excel countif vba código con criterios resultantes con valores

No estoy seguro si lo que quiero lograr es posible. Asi que aqui esta:

Tengo el cuaderno con 2 hojas:

La primera hoja contiene datos en bruto con los empleados y las capacitaciones que tomaron o no tomaron (no pudieron asistir a la capacitación). Las hojas contienen pocas columnas como: nombre, ID especial (diferente para cada empleado), 2 columnas en blanco, presencia (sí / no) y algunas más ...

La segunda hoja creará un informe basado en el rango y los criterios de presencia.

Técnicamente es algo así:

La hoja de informe tiene una lista de empleados, se filtrarán con autofiltro. Los empleados filtrados serán revisados ​​si estaban en 14 categorías de capacitaciones. Las categorías difieren con el rango (los rangos son conocidos; los rangos de tiempo se agregarán o ajustarán a los entrenamientos recientemente agregados).

Mi problema: ¿Es posible crear un código vba que verifique si el empleado estuvo en ciertos entrenamientos (cantidad de conteo en cierto rango con condición: no presente = no contar) y pegar el valor en ciertas celdas? Si es así, ¿podría dar algún consejo sobre cómo hacer eso? No estoy pidiendo código listo.

Tratando de hacerlo funcionar pero me quedé atascado en esto. Error en la línea "if cells.find ...".

Sub Check()

MyRange = Range("A1", Selection.End(xlDown))

For Each MyCell In MyRange
With Range("pp2dni2007")
    If Cells.Find(MyCell.Value) Is Nothing Then

    Else
        If ActiveCell.Value = ActiveCell.Offset(0, 3).Value Then
        MyCell.Offset(0, 6).Value = 1

        Else
        MyCell.Offset(0, 6).Value = 0

        End If

    End If

End With
Next

End Sub


Segunda edición, el código anterior hizo un bucle infinito. Ahora creo que las sentencias if hacen referencia a un rango incorrecto pero no estoy seguro de cómo tratarlas.

Sub Check()

Dim MyRange As Range, MyCell As Variant

Range("A1").Select

Set MyRange = Range(Selection, Selection.End(xlDown)).Rows.SpecialCells(xlCellTypeVisible)

For Each MyCell In MyRange.Cells
    With Range("pp2dni2007")
        If .Cells.Find(MyCell.Value) Is Nothing Then

        Else
            If .Cells.Find(MyCell.Value).Value = .Cells.Find(MyCell.Value).Offset(0, 3).Value Then
            MyCell.Offset(0, 6).Value = 1

            Else
            MyCell.Offset(0, 6).Value = 0

            End If

        End If

    End With
Next

End Sub

Ejemplo de libro de trabajo:https://dl.dropboxusercontent.com/u/7421442/sample%20workbook%20(1).xls

Respuestas a la pregunta(1)

Su respuesta a la pregunta