Contagem de múltiplos critérios de alcance

1

este é o meu primeiro post neste fórum, por isso é provavelmente apresentado de uma forma muito ruim. Estou usando o Excel 2007 para coletar alguns dados para minha tese. Aprendi recentemente como aninhar COUNTIFS dentro do SUMPRODUCT para pesquisar vários critérios em que um desses critérios é um intervalo em vez de uma constante. No entanto, a mesma fórmula não funciona se eu precisar pesquisar vários critérios onde dois (ou mais) dos critérios são intervalos em vez de constantes.

Digamos que eu tenha três colunas adjacentes AC no Excel, onde A é chamado de "Frutas" e contém várias frutas, B é chamado "cor" e C é "venenoso?", contendo apenas os valores "sim" ou "não" ". Como faço para adicionar todos os itens que são uma maçã OU uma pêra da coluna A e OU verde OU vermelho da coluna B e não venenosos da coluna C?

Nesta folha simples do Excel, a resposta correta é 4, mas a fórmula a seguir me dá 1:

=SUMPRODUCT(COUNTIFS(A:A,$E$2:$E$3,B:B,$F$2:$F$3,C:C,$G$3))

ondeoscritériossereferemamatrizesqueeucoloqueimanualmentefora.

Eutenhoprocuradorespostasnaredeenofórum,eencontrodúziasdepostsrelacionados,algunstalvezatéidênticos( Contagens com múltiplos intervalos de critérios OR ), mas eu ainda não consigo descobrir ... Correndo tarde na hora da minha tese, então eu gostaria de receber ajuda.

    
por Pjossemannen 27.05.2018 / 11:14

4 respostas

1

Você não precisa aninhar nada. A função SUMPRODUCT é muito poderosa, permitindo que você conte ou some com base em condições muito complexas. Suporta os operadores lógicos AND e OR.

TL; versão DR

=SUMPRODUCT((($A$2:$A$10="Apple")+($A$2:$A$10="Pear"))*(($B$2:$B$10="Red")+($B$2:$B$10="Green"))*($C$2:$C$10<>"Yes"))

Versão longa (desculpe ...)

Você deve realmente aprender como usar essa função, porque ela é muito útil e pode economizar muito tempo. Aqui está um guia rápido e sujo sobre como usá-lo, mas eu aconselho você a manter algum tipo de arquivo de teste com exemplos simples, como o que você forneceu, para que você possa experimentá-lo. Não hesite em dividir os diferentes problemas que você está tentando resolver.

Basicamente, um SUMPRODUCT contém vários membros , cada um deles sendo uma condição. Se você multiplicar essas condições, obterá um AND lógico. Se você adicionar essas condições, obterá um OR lógico.

É muito mais fácil com um exemplo! Então, aqui está o detalhamento da fórmula final usando o exemplo de frutas.

Observação: para facilitar as coisas, usei os nomes de tabelas Fruits , o que permite o uso de intervalos nomeados e melhora a legibilidade.

Então,aquiestácomofunciona.SuaprimeiracondiçãoérealmenteumaORlógica(vocêquerMaçãsouPeras,jáqueumafrutanãopodeserambas.Entãoafórmula(1)tem2membros,ou2condições:Fruta=Maçã,Fruta=Pêra.

(Fruits[Fruit]="Apple") retornará TRUE se for uma maçã, FALSE caso contrário. Somando isso ao segundo membro ( (Fruits[Fruit]="Pear") ), você obterá uma matriz de 0 e 1. A lógica é a seguinte:

  • Falso + Falso = 0
  • Verdadeiro + Falso = 1
  • Verdadeiro + verdadeiro = 1

Em seguida, o SUMPRODUCT soma todos os elementos dessa matriz (0 e 1). Qual é basicamente o mesmo que contar elementos. O resultado é 8, como esperado (célula D14).

A segunda condição (cor) funciona exatamente da mesma maneira. Se você quiser incluir uma terceira cor (por exemplo, "laranja"), basta adicionar um novo membro na equação com um + .

A 3ª condição é mais simples, você só tem 1 critério. Usei o sinal <> propositalmente para mostrar que você também pode excluir elementos. Na fórmula (1), você poderia ter usado por exemplo (Fruits[Fruit]<>"Banana") .

Importante: Por favor, note que em um SUMPRODUCT , quando há apenas um membro (como na 3ª equação), você precisa converter o resultado em um número. Lembre-se: o SUMPRODUCT cria uma matriz de TRUE e FALSE . Você pode fazer isso facilmente usando a função N(...) ou, alternativamente, escrevendo --(...) , que transformará TRUE em 1 e FALSE em 0.

Agora, essas três condições funcionam individualmente, mas queremos combiná-las em uma fórmula. E como queremos que cada uma dessas três condições sejam verdadeiras (frutas, cores e venenosas), precisamos criar um AND lógico. Isso pode ser feito da mesma maneira que fizemos no nosso OR, mas desta vez usaremos a multiplicação ( * ):

  • Falso * Falso = 0
  • Verdadeiro * Falso = 0
  • Verdadeiro * Verdadeiro = 1

Para nossas três condições, simplesmente usamos as três fórmulas individuais que escrevemos anteriormente e as colocamos dentro de um SUMPRODUCT . Esses 3 membros devem ser encapsulados por parênteses e separados por um * (basicamente os multiplicamos).

Aqui estão as fórmulas finais, para você tentar:

=SUMPRODUCT((Fruits[Fruit]="Apple")+(Fruits[Fruit]="Pear"))
=SUMPRODUCT((Fruits[Color]="Red")+(Fruits[Color]="Green"))
=SUMPRODUCT(N(Fruits[Poisonous]<>"Yes"))

E o final:

=SUMPRODUCT(((Fruits[Fruit]="Apple")+(Fruits[Fruit]="Pear"))*((Fruits[Color]="Red")+(Fruits[Color]="Green"))*(Fruits[Poisonous]<>"Yes"))

Notas laterais:

  • Cada condição que você testar (por exemplo, Cor = Vermelho) deve ser encapsulada entre parênteses: (Fruits[Color]="Red")
  • A ordem dos parênteses é muito importante se você tiver condições OR. Por exemplo, a equação (X and (Y or Z)) não é igual a ((X and Y) or Z) .
  • Você pode usar os operadores clássicos para testar uma condição: = para igual, < > para diferentes, > e < para maior / menor que, > = e < = para maior / menor ou igual.
  • Usamos o SUMPRODUCT para contar, mas também podemos usá-lo para somar as coisas. Se um dos membros da equação não tiver um sinal = , os valores serão considerados (veja o exemplo abaixo, onde a coluna G é somada).
  • Os critérios "Apple" podem ser substituídos por uma referência a uma célula, que pode ser um menu suspenso. É uma prática melhor usar variáveis, em vez de escrever texto diretamente dentro de uma fórmula.
  • SUMPRODUCT pode ser uma fórmula de uso intensivo de recursos, já que está fazendo multiplicações e somas ... Dependendo de quantas condições você está testando, de quão grande é o conjunto de dados e de quantas vezes você está usando um SUMPRODUCT . Para condições mais simples, SUM.IFS é provavelmente mais rápido.
  • SUMPRODUCT também suporta pesquisa de texto parcial, conforme mostrado abaixo:

    
por 28.05.2018 / 11:05
1

Aqui está uma solução alternativa, que funciona muito bem e é muito mais adequada à necessidade do OP de ter uma lista de possíveis critérios. Eu adaptei o código encontrado em esta resposta .

Você tem basicamente duas formas de contar valores:

  • Use uma "lista de permissões" para listar os valores aceitáveis usando ISNUMBER
  • Usando um "balcklist", para excluir os valores inaceitáveis, usando ISNA

Lista de permissões:

=SUMPRODUCT(
    (ISNUMBER(MATCH(Fruits[Fruit],Whitelist[Fruit];0)))
    *
    (ISNUMBER(MATCH(Fruits[Color],Whitelist[Color];0)))
    *
    (ISNUMBER(MATCH(Fruits[Poisonous],Whitelist[Poisonous];0)))
)

Lista negra:

=SUMPRODUCT(
    (ISNA(MATCH(Fruits[Fruit],Blacklist[Fruit],0)))
    *
    (ISNA(MATCH(Fruits[Color],Blacklist[Color],0)))
    *
    (ISNA(MATCH(Fruits[Poisonous],Blacklist[Poisonous],0)))
)

Recomendamos enfaticamente que você não use isso em uma coluna, pois isso pode exigir muitos recursos. Eu não tentei em uma lista muito grande de valores, mas fique à vontade para compartilhar seus resultados!

    
por 29.05.2018 / 11:33
0

Não tenho certeza se entendi isso totalmente mas parece ser possível obter a resposta com

=SUMPRODUCT(COUNTIF($E$2:$E$3,$A$2:$A$10), COUNTIF($F$2:$F$4,$B$2:$B$10), COUNTIF($G$3,$C$2:$C$10))

Para tentar explicar: como sabemos COUNTIF($B$2:$B$10, "Red") (ou, equivalentemente, COUNTIF($B$2:$B$10, $F$2) conta a fruta vermelha, produzindo uma contagem de 3. Da mesma forma, COUNTIF($B$2:$B$10, "Green") (ou, equivalentemente, COUNTIF($B$2:$B$10, $F$3) conta a fruta verde, produzindo uma contagem de 5. Por isso, é intuitivamente tentador usar COUNTIF($B$2:$B$10, $F$2:$F$3) contar as frutas que são vermelhas ou verdes. Isso não funciona por si só, mas podemos fazê-lo ao fazer

=SUM(COUNTIF($B$2:$B$10, $F$2:$F$3))

como uma fórmula de matriz ou

=SUMPRODUCT(COUNTIF($B$2:$B$10, $F$2:$F$3))

como uma fórmula normal. Uma das coisas boas sobre o SUMPRODUCT é que Ele é projetado para lidar com matrizes automaticamente, para que você possa usá-lo para fazer coisas com matrizes sem precisar de fórmulas de matriz.

Mas as fórmulas acima estão fazendo exatamente o que a discussão anterior levaria você a esperar: eles estão adicionando 3 + 5 e obtendo 8. Isso é importante: eles estão adicionando uma matriz de dois números, porque estamos olhando para duas cores. Isso nos coloca em problemas quando procuramos diferentes números de valores nas diferentes colunas.

COUNTIF($E$2:$E$3, "Yellow") , COUNTIF($E$2:$E$3, "Red") e COUNTIF($E$2:$E$3, "Green") não parece, a princípio, fazer tanto sentido; eles têm os valores 0, 1 e 1, respectivamente. Mas isso significa que COUNTIF($E$2:$E$3,$A$2:$A$10) produz uma matriz de nove números, a saber: 0, 1, 1, 1, 1, 1, 1, 1, 1 e 1. Adivinha? A soma ainda é 8.

Lembre-se de como SUMPRODUCT funciona. SUMPRODUCT(X11:X14, Y11:Y14, Z11:Z14) , por exemplo, é igual a

( X11 × Y11 × Z11 ) +
( X12 × Y12 × Z12 ) +
( X13 × Y13 × Z13 ) +
( X14 × Y14 × Z14 )

Por isso, é necessário ter argumentos de matriz com o mesmo comprimento. Dois, dois e um é um problema; 15, 26 e algum outro número é um problema. Nove, nove e nove é bom.

Agora, olhe o exemplo X , Y , Z , mas faça estas substituições:

  • X11A2 é uma das frutas que estamos procurando,
  • Y11B2 é uma das cores que procuramos,
  • Z11C2 é “não”,

e assim por diante. Como TRUE é 1 e FALSE é 0, cada linha da matriz SUMPRODUCT é 1 se cada coluna contém um valor que estamos procurando (porque 1 × 1 × 1 = 1), e 0 se a linha não for aceitável em todas as colunas. Então, temos uma lista de nove 0s e 1s, que adicionamos.

    
por 28.05.2018 / 15:25
-3

Como esta é a questão principal, " gostaria de contar o número de maçãs e pêras (não bananas) que são verdes ou vermelhas, mas não venenosas ."

Portanto, eu gostaria de sugerir que a solução no formato de tabela atenda aos seus requisitos.

Verifique a captura de tela:

EscrevaestafórmulaemE2:=COUNTIFS($A$2:$A$10,"="&$D2,$B$2:$B$10,"="&E$1)

Note, Encha a Célula de Fórmula 1 e, em seguida, em Linha Inferior, você recebe o número de Maçãs e Peras.

Escreva esta fórmula em G2: =COUNTIFS($A$2:$A$10, "="&$D2,$C$2:$C$10,"=No")

Nota: Preencha a Fórmula 1 Linha abaixo, você recebe o número de Maçãs não-venenosas & Peras.

Por fim, some a coluna não venenosa.

    
por 27.05.2018 / 15:24