Critérios complexos para contagem de ocorrências

1

Para uma pesquisa (consistindo de +2000 entradas por tabela), preciso realizar uma operação de soma difícil nas duas tabelas a seguir (simplificadas).

Tabela A:

  |   id    sex
--+---------------
1 |   101    m
2 |   102    w
3 |   103    w
4 |   104    m

Tabela B:

  |   id    a    b
--+------------------
1 |   101   1    1
2 |   102   1    0
3 |   103   0    0
4 |   104   1    1

Os valores para o atributo 'a' e 'b' devem ser sim (1) e não (0). Agora quero contar a ocorrência do valor 1 na coluna 'a' para cada pessoa do sexo masculino ('m').

Para este exemplo, o resultado seria 2 .

Você pode usar este arquivo (test.odt) como ponto de partida, se você pretende ajudar.

Como alguém faria isso? Isso é possível no Libre Calc, ou devo usar o SQL?

    
por neuronalbit 17.11.2017 / 09:52

1 resposta

1

Eu não fiz um teste, mas acho que é definitivamente possível no Calc. Você quer uma combinação de VLOOKUP E SUMIFS e conhecimento das funções do Array .

Basicamente, você quer usar SUMIFS na coluna B da Tabela B, fazendo referência ao gênero usando VLOOKUP .

Então, usando suas tabelas de exemplo, em B6 da tabela B:

=SUMIFS(B2:B5; B2:B5; VLOOKUP({A};TableA!$A$2:$B$5; 2)="m")

Não tenho certeza se o '{A}' é a sintaxe correta para fazer o Lookup funcionar na moda da matriz.

Como alternativa, você poderia inserir uma coluna entre 'id' e 'a' na Tabela B, usar VLOOKUP para calcular o sexo e usar SUMIFS para saber se a segunda coluna (nova) contém "m" .

EDITAR: Cancelar isso

Parece que o Vlookup não pode ser usado em fórmulas de array, então isso não funciona. No entanto, tente isso em B6:

=SUMPRODUCT(B2:B5*(LOOKUP(A2:A5,Sheet1.A2:Sheet1.A5,Sheet1.B2:Sheet1.B5)="m"))

A Tabela A está na Folha1, a Tabela B está na Folha2.

    
por 17.11.2017 / 10:25