Excel: soma valores em uma coluna com base em critérios * em outras colunas * (critérios complexos)

0

Veja abaixo para reescrever.

Por favor, consulte os dados abaixo para a questão. O topo A B C são colunas e os números da extrema esquerda 1 a 15 são linhas. O resto são células.

           A       B        C
      1    1       A       100
      2    1       B       200
      3    1       C       300
      4    1       D       400
      5    1       E       500
      6    2       Z       100
      7    2       B       200
      8    2       C       300
      9    2       D       400
     10    2       Y       500
     11    3       K       100
     12    3       B       200
     13    3       C       300
     14    3       D       400
     15    3       J       500

Eu quero somar #s na coluna C usando as colunas A e B como critérios: Soma os números da coluna C somente se a coluna A é 1 e seus componentes da coluna B (A, B, C, D, E ) da Coluna A = 1 também estão na Coluna A = 2 e Coluna A = 3 (destacadas em negrito; B, C, D) .

Por exemplo:

O resultado desejado para a Coluna A = 1 deve ser 900 (B + C + D), uma vez que apenas B, C, D também estão incluídos para a Coluna A = 2 e Coluna A = 3

A (célula B1), E (célula B5) da coluna A = 1 são excluídos porque não são duplicados para a coluna A = 2 e coluna A = 3 "

Pensei em usar o Array Formula (CSE) e o SUMPRODUCT para criar um tipo de regra COUNTIF, mas me perdi na formação de uma lógica adequada.

Re-gravação proposta:

Por favor, consulte os dados abaixo para a questão. O muito superior A , B , C , e Desired Result são apenas os nomes das colunas, e os números da extrema esquerda de 1 a 24 são os números das linhas. O resto são células com dados. Os dados não são realmente formatados (negrito e itálico); a formatação abaixo está lá apenas para destacar as células que são discutidos no texto.
Nota: Os valores na coluna B são exclusivos da primeira letra; não há entradas Aardvark , Butterfly ou Caterpillar .

       A       B         C          Desired Result
 1    17    Antelope   101                502
 2    17    Badger     201
 3    17    Cougar     301
 4    17    Dingo      401
 5    17    Elephant   501
 6    42    Zebra      102                504
 7    42    Badger     202
 8    42    Cougar     302
 9    42    Dingo      402
10    42    Yak        502
11    83    Koala      103                506
12    83    Badger     203
13    83    Cougar     303
14    83    Fox        403
15    83    Jaguar     503
16    83    Llama      603
17    83    Moose      703
18    83    Ocelot     803
19    83    Panther    903
20    95    Tiger      104                708
21    95    Dingo      204
22    95    Cougar     304
23    95    Badger     404
24    95    Weasel     504

Este é apenas o começo de uma planilha muito maior. A coluna A contém uma lista de valores não exclusivos (números), e a planilha é classificada por Coluna A (ou pelo menos agrupada), então todos os 17 s estão em linhas consecutivas, todos os 42 s estão juntos, etc. No arquivo real, existem muito mais que quatro valores distintos na coluna A .

Os grupos de valores distintos na Coluna A são a chave para esse problema. Uma maneira de ver isso é que alguns dos valores da coluna B estão presentes em todos os grupos de valores da coluna A . Eles são destacados em negrito (não-itálico) nos dados acima: Badger (nas células B2 , B7 , B12 e B23 ) e Cougar (nas células B3 , B8 , B13 e B22 ).

Agora, para cada valor exclusivo da coluna A , Eu quero a soma dos valores na coluna C que estão na mesma linha com um valor Coluna B que está em negrito; ou seja, um valor B que ocorre em cada grupo.

Por exemplo:

A saída desejada para o primeiro grupo, na qual Coluna A = 17, é 502 (mostrado na célula D1 ), porque as linhas 2 e 3 são as linhas no "Grupo 17" que contêm Badger e Cougar e C2 + C3 é 502. Da mesma forma, D6 = C7 + C8 , D11 = C12 + C13 e D20 = C23 + C22 .

Se a célula B14 foi alterada de Fox para Dingo , então seria o mesmo que B4 , B9 e B21 (todos atualmente exibidos em itálico). Portanto, eles se tornariam em negrito e, portanto, C4 , C9 , C14 e C21 entrariam nas somas, resultando em valores de D da coluna de 903, 906, 909 e 912. p>

Pensei em usar a fórmula de matriz (CSE) e SUMPRODUCT para criar um tipo de regra COUNTIF , mas me perdi na formação da lógica correta.

    
por EA1234 12.06.2015 / 01:02

4 respostas

2

Supondo que os valores da Coluna B só precisem aparecer em outro grupo, o seguinte funcionará:

Aqui está a fórmula final de uma linha como uma fórmula de array (CSE). Coloque-o em qualquer célula e não se esqueça de Ctrl + Shift + Enter para ordenar:

= SUM (SE (IFERROR (MATCH (SE (A1: A15 = 1, B1: B15, "X ~ X"), IF (A1: A15 < > 1, B1: B15, ""), 0 ), 0) > 0, C1: C15))

Deixe-me dividir isso:

[1] SE (A1: A15 = 1, B1: B15, "X ~ X") Retorna uma matriz de valores B para apenas as linhas A = 1, caso contrário, retorna lixo (explicará).

[2] IF (A1: A15 < 1, B1: B15, "") Retorna uma matriz de valores B para apenas o A < > 1 linhas, em branco, de outra forma.

[3] Estão dentro da MATCH ([1], [2], FALSE). Para cada uma das [1] linhas, esse valor será exibido em [2], se [1] retornar em branco em vez de lixo eletrônico, então acabaríamos igualando os espaços em branco também e não queremos isso.

[4] Isto é então aninhado dentro de um IFERROR () para limpar erros.

[5] Que está dentro de um IF () para retornar uma matriz de valores C que não resultaram em erro em [4].

[6] SUM adiciona tudo isso e estamos prontos!

    
por 12.06.2015 / 22:29
1

Eu mesmo não consegui criar uma fórmula de uma linha. No entanto, eu criei um processo de duas etapas que pode ser uma faísca em direção a um forro, então vou postá-lo.

  • Preencha a célula D2 e abaixo com %código%
  • Preencher a célula D16 (ou qualquer célula vazia) com %código%

Espero que isso ajude.

    
por 12.06.2015 / 15:47
1

O único método que funcionará (se eu entender o problema totalmente) é escrever uma função definida pelo usuário no VBA.

O motivo é que você precisaria identificar o número de grupos e verificar se existe algo em cada grupo. Se houvesse uma função do Excel que retornasse valores exclusivos em um intervalo, você poderia estar bem. Mas desde que não há você não pode determinar quaisquer pontos em comum entre todos os grupos.

Note que você pode contar o número de valores únicos em uma coluna, mas isso só seria útil se um valor da coluna B aparecesse apenas uma vez por grupo.

Aqui estão alguns recursos para você começar a usar funções personalizadas no VBA:

link

link

    
por 15.06.2015 / 13:31
1

@Snoopen

Obrigado! Funcionou !!

O site continua dizendo que preciso de mais reputação para adicionar um comentário diretamente à sua postagem, mas sua fórmula final de uma linha funcionou. Muito obrigado!

@Clif

Obrigado por compartilhar sua descoberta e realmente ser útil!

Realmente aprecie a ajuda de todos!

    
por 16.06.2015 / 15:10