Minha solução
A seguinte fórmula de matriz, com referências de células ajustadas adequadamente, deve fazer o que você está procurando:
=SUM(1*((OFFSET(C2,0,0,COUNT(C:C),1)-OFFSET(B2,0,0,COUNT(C:C),1))>=0))/COUNT(C:C)
Exemplo:
DefinaareferênciaC2noprimeiroOFFSET
paraacélulasuperiordosdados"Reais" ( F5 no seu exemplo), o B2 referência no segundo OFFSET
para a célula superior dos dados de 'Objetivo' ( E5 no seu) e defina todas as referências C: C para a coluna contendo um ou outro dos dados "Real" ou "Objetivo" ( E: E ou F: F no seu). Verifique se as únicas células com dados numéricos na coluna escolhida para substituir as referências C: C são aquelas células com 'Real' ou Valores de 'Objetivo' neles, caso contrário, a fórmula retornará um resultado impreciso ou falhará completamente.
Para inserir a fórmula como uma fórmula de matriz, digite-a apropriadamente e pressione Ctrl-Shift-Enter, em vez de apenas Enter. (Veja aqui para obter mais informações sobre fórmulas de matriz ou apenas pesquisar on-line para "fórmula de matriz de excel".) A qualquer momento você faz uma alteração na fórmula, sempre terá que inseri-la com Ctrl-Shift-Enter para que ele se comporte adequadamente.
Como funciona
- Cada
COUNT
recupera o número de linhas de dados presentes.
- As duas chamadas
OFFSET
recuperam as duas matrizes de interesse, as pontuações "Atual" e "Objetivo". Em cada chamada:
- O primeiro argumento marca a célula superior esquerda da matriz;
- O segundo e terceiro argumentos são os deslocamentos de linhas e colunas, respectivamente (ambos zero aqui);
- O quarto argumento indica o número de linhas a serem incluídas na matriz; e
- O quinto argumento indica o número de colunas a serem incluídas.
- Como essa é uma fórmula de matriz, subtrair as matrizes "Real" e "Objetivo" retorna uma matriz do mesmo tamanho, mas contendo a diferença entre elementos entre elas.
- A comparação
>=0
converte a matriz de diferenças em uma matriz de valores TRUE
/ FALSE
, indicando se a meta foi ou não atingida.
- O
1*
está lá para converter os valores TRUE
e FALSE
booleano para 1
e 0
numéricos, para depois serem contados pela função SUM
.
- No Excel,
TRUE
e FALSE
implicitamente transportam os valores numéricos de um e zero.
- MAS, se você tentar transmitir um intervalo ou matriz contendo
TRUE
/ FALSE
valores para uma função como SUM
, ele ignorará TRUE
valores e retornará zero.
- Portanto, multiplicar o array
TRUE
/ FALSE
por 1 é uma maneira de induzir o Excel a interpretar o array de uma maneira útil.
- O
SUM
dividido pelo COUNT
é a fração desejada de alunos que atendem às metas definidas.
EDIT : Por resposta do wbeard52, deve ser possível no Excel 2010 ou posterior substituir o 1*...
hack por uma estrutura IF
. Em versões mais antigas do Excel, IF
manipulou incorretamente as entradas da matriz.