
Estou tentando configurar uma fórmula no Excel que analisará um intervalo de dados com datas especificadas em c7:c30 e categorias Ativo-"A" e Concluído-"C" em L7:L30. Estou tentando fazer com que o Excel analise cada linha individualmente e compare se as datas estão entre as datas trimestrais especificadas de 01/01/12 (B38) e 31/03/12 (C38) (o primeiro trimestre do ano), e se esta condição for atendida, então conte aqueles que estão marcados com "A" como ativos.
Eu descobri o seguinte que não funciona, pois é apenas olhar para a primeira data especificada e contar todas as marcadas com "A" se a primeira data corresponder às especificações do primeiro trimestre.
{=(SE(($C$7:$C30>=$B$39)*($C$7:C$30<=$C$39),CONTARSE($L$7:$L30,"a"),0)) }
Por favor, ajude-me a descobrir o que há de errado com esta fórmula: ela não examinará cada linha individualmente e, em vez disso, contará tudo indicado com A se a primeira data for considerada verdadeira em relação à instrução if apresentada.
Desculpe, não sou muito bom no Excel, qualquer ajuda será apreciada.
Obrigado!
Responder1
Acho que você pode ter um problema com a maneira como estruturou a fórmula de matriz. Apenas descompactando sua instrução, você estará construindo um array que terá quantas linhas você tiver, com cada linha contendo o resultado de COUNTIF($L$7:$L30,"a") se a condição de data for atendida ou 0.
Como você não está aplicando nenhuma função de contagem agrupando tudo, a função retornará o array inteiro, mas você verá apenas o primeiro resultado na célula, e é por isso que parece ser controlado exclusivamente por uma célula.
Uma maneira alternativa de abordar isso seria a seguinte:
Seus três testes (para cada linha) são:
- data >= B38
- data <= C38
- condição = "uma"
e você só quer contar onde todos os três são verdadeiros.
Com bastante folga, os valores verdadeiros são avaliados como 1 e falsos como 0, para que possamos usar uma operação de multiplicação para obter o que você deseja.
Então, para uma única linha, você gostaria de fazer o seguinte
(C7 >= B38) * (C7 <= C38) * (L7="a")
(e obviamente, expandindo para C7:C30 etc. para cobrir suas linhas de interesse)
Para então resumir isso em um único valor, você deseja agrupar tudo em uma instrução SUM() que apenas percorrerá a lista e adicionará todos os valores.
SUM( (C7:C30>B39) * (C7:C30<=C39) * (L7:L30="a") )
Além disso, se você estava curioso para ver, volte para sua fórmula original e finalize-a com uma instrução sum() e você obterá o resultado mostrando o número de vezes que seu status é definido como "a", multiplicado pelo número de linhas que atenderam à condição de data.
(observando: as fórmulas de matriz exigem um pouco de esforço inicialmente, mas depois que você as entende, elas meio que funcionam bem. Eu originalmente li sobre elas emhttp://www.cpearson.com/excel/ArrayFormulas.aspxo que ainda é uma boa explicação se tudo ainda estiver confuso.)