Usando COUNTIF no Excel para contar o número de valores "Maiores que" em uma matriz de valores


2

Então aqui está a minha situação. Sou diretor de criação de um rastreador para meus professores usarem para acompanhar o crescimento dos alunos nas avaliações. No rastreador atual, ele é configurado assim:

            % of            67%
            Students Met

**Student Name    Week 1 Goal:         Week 1 Actual:        Goal Met?:**
  Example A       23                    32                    Y
  Example B       45                    44                    N
  Example C       53                    55                    Y

Eu uso uma fórmula para o "Objetivo atingido?" coluna para colocar um Y ou N, dependendo se o Real atingir ou exceder a coluna Meta. Em seguida, uso outra fórmula para determinar a% de alunos Conhecidos executando um COUNTIF de "Y" s na coluna Objetivo Atendido, dividindo-o por um COUNTA dessa coluna e multiplicando por 100.

O que eu quero saber é ... isso é muito complicado de usar para os professores, e quanto mais colunas e fórmulas eu colocar, maior o risco de os professores digitarem no lugar errado e estragar as fórmulas ... existe alguma maneira Posso apenas executar um COUNTIF das colunas Matriz da meta semanal e real semanal e contar apenas as linhas em que a real é> = a meta? Como existe uma maneira de fazer COUNTIF (E5: F17, F> = E) e colocar algum tipo de símbolo como variável pelos E e F nos critérios para que ele vá linha por linha e compare os valores, em seguida, conte o aqueles em que o valor F é maior que o valor E?

Todas as sugestões seriam ótimas, porque então eu posso eliminar a coluna "Objetivo atingido" (que eles invariavelmente digitam e preciso voltar e corrigir semanalmente). Torna-se irritante ter que proteger cada coluna 3 em um rastreador enorme!

Muito obrigado por qualquer conselho!

Brendan


Que tal ocultar a coluna com a "Meta alcançada?" Fórmula?
precisa

Por que não proteger contra gravação as células que você não deseja que outras pessoas editem? Você pode usar a validação de dados para gerar uma mensagem pop-up dizendo "Não edite esta célula" quando alguém clicar na célula.

Respostas:


2

Você deve sempre proteger com senha as células que não deseja que sejam alteradas.

Para responder à sua pergunta, você precisará inserir uma fórmula de matriz. Digite o seguinte, supondo que os nomes das colunas comecem em A3 e pressione Ctrl+ Shift+ Enter.

=SUM(IF(C4:C6>=B4:B6,1,0))/COUNT(C4:C6)

Se você fez isso corretamente, colchetes aparecerão ao redor de toda a fórmula.

={SUM(IF(C4:C6>=B4:B6,1,0))/COUNT(C4:C6)}

Interessante, a Microsoft deve ter melhorado o comportamento de IF. Quando tentei fazer isso pela primeira vez, provavelmente com o Excel 2003, IFnão lidei com as entradas da matriz corretamente. Excelente!
Hby2Py

3
@ Brian - Excel 2003 certamente poderia fazer isso (ainda pode) - ele precisa de "entrada de matriz", no entanto, você tem certeza de que estava fazendo isso? BTW você pode usar SUMPRODUCT e evitar a necessidade de gama de entrada por exemplo, apenas esta fórmula "regular"=SUMPRODUCT((C4:C6>B4:B6)+0)/COUNT(C4:C6)
Barry houdini

Uau. Parece que o meu Excel-fu não está quase no nível que eu pensava. :-) Vou ter que reavaliar minha bolsa de truques, pois muitos deles podem não ser mais relevantes. Quanto a IF, talvez eu estivesse usando uma versão ainda mais antiga, Excel 2000 ou 97, - lembro-me claramente de ter tido muitos problemas IFpara trabalhar corretamente com entradas de matriz.
Hby2Py

2
Ainda há uma quantidade razoável de trabalho se a lista continuar crescendo, atualizando os intervalos para incluir os novos dados. Para aumentar automaticamente o intervalo, consulte os intervalos nomeados dinâmicos usando a função OFFSET. Desfrutar.
precisa saber é o seguinte

11
@ wbeard52 - os intervalos nomeados dinâmicos são uma boa opção +1, mas não é necessário nenhum trabalho se você não os usar - as fórmulas acima podem acomodar linhas em branco; portanto, não há motivo para que você não possa usar intervalos que serão grande o suficiente para incorporar qualquer expansão
Barry houdini

0

Minha solução

A seguinte fórmula de matriz, com referências de célula 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:

Recorte do Excel

Defina a referência C2 na primeira OFFSETcélula superior dos dados 'Reais' ( F5 no seu exemplo), a referência B2 na segunda OFFSETcélula superior dos dados 'Objetivo' ( E5 na sua) e defina todos os o C: C faz referência à coluna que contém 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 que você escolheu para substituir as referências C: C são aquelas com valores 'Real' ou 'Objetivo', 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 adequadamente e pressione Ctrl-Shift-Enter, em vez de apenas Enter. (Veja aqui para obter mais informações sobre fórmulas de matriz ou apenas pesquise on-line por "fórmula de matriz de excel".) Sempre que você fizer uma alteração na fórmula, sempre será necessário digitá-la com Ctrl-Shift-Enter para que se comportar corretamente.

Como funciona

  • Cada um COUNTrecupera o número de linhas de dados presentes.
  • As duas OFFSETchamadas recuperam as duas matrizes de interesse, as pontuações 'Real' e 'Meta'. Em cada chamada:
    • O primeiro argumento marca a célula superior esquerda da matriz;
    • O segundo e o terceiro argumentos são os deslocamentos de linha e coluna, 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 'Meta' retorna uma matriz do mesmo tamanho, mas contendo a diferença entre elementos.
  • A >=0comparação converte a matriz de diferenças em uma matriz de TRUE/ FALSEvalores indicando se a meta foi ou não atingida.
  • A 1*está lá para converter o booleana TRUEe FALSEvalores para numérica 1e 0, em seguida, para ser contado pela SUMfunção.
    • No Excel, TRUEe FALSEcarregue implicitamente os valores numéricos de um e zero.
    • MAS, se você tentar passar um intervalo ou matriz contendo TRUE/ FALSEvalores para uma função como SUM, ela ignorará TRUEvalores e retornará zero.
    • Portanto, multiplicar o conjunto TRUE/ FALSEmatriz por 1 é uma maneira de induzir o Excel a interpretar o conjunto de uma maneira útil.
  • O SUMdividido pelo COUNTé então a fração desejada de alunos que atendem às metas estabelecidas.

EDIT : Pela resposta de wbeard52, deve ser possível no Excel 2010 ou posterior substituir o 1*...hack por uma IFestrutura. Nas versões mais antigas do Excel, IFentradas incorretas da matriz.


0

Mais algumas opções de fórmula de matriz, então você precisa pressionar Ctrl+ Shift+ Enterpara confirmá-las.

Para encontrar o número de metas atingidas:

=SUM(--(C4:C6>B4:B6))

Para encontrar a porcentagem de metas alcançadas:

=SUM(--(C4:C6>B4:B6))/count(C4:C6)

Você pode usá-los independentemente. Lembre-se de inseri-los como fórmulas de matriz pressionando Ctrl+ Shift+ Enter.


0

Outra abordagem de "fórmula de matriz" é assim:

=AVERAGE(IF(E5:E17<>"",IF(F5:F17>=E5:E17,1,0)))

confirmado com CTRL+ SHIFT+ENTER

Isso fornece uma porcentagem real como 0,5 - se você quiser 50 multiplicar por 100

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.