Código do Excel countif vba com critérios resultantes com valores
Não tenho certeza se o que eu quero alcançar é possível. Então aqui está:
Eu tenho pasta de trabalho com 2 folhas:
A primeira folha contém dados brutos com funcionários e treinamentos que eles realizaram ou não (eles não puderam comparecer ao treinamento). O Sheets contém algumas colunas como: nome, ID especial (diferente para cada empregado), 2 colunas em branco, presença (sim / não) e pouco mais ...
A segunda planilha criará um relatório com base nos critérios de intervalo e presença.
Tecnicamente é algo assim:
Folha de relatório tem lista de funcionários, eles serão filtrados usando autofilter. Esses funcionários filtrados serão verificados se estiverem em 14 categorias de treinamentos. As categorias diferem com o intervalo (os intervalos são conhecidos; os intervalos de tempo serão adicionados ou ajustados aos novos treinamentos adicionados).
Meu problema: É possível criar código vba que irá verificar se o empregado estava em certos treinamentos (contagem em determinado intervalo com condição: não presente = não conta) e cole o valor para certas células? Se você puder, dê alguns conselhos sobre como fazer isso? Eu não estou pedindo código pronto.
Tentando fazer isso funcionar, mas eu me prendi a isso. Erro na linha "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
2ª edição, o código anterior fazia loop infinito. Agora, acho que as declarações if fazem referência a um intervalo errado, mas não sabem como lidar com isso.
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
Exemplo de pasta de trabalho:https://dl.dropboxusercontent.com/u/7421442/sample%20workbook%20(1).xls