Como definir 2 condições / critérios para VLOOKUP / LOOKUP / etc no OpenOffice Calc (ou Excel)

3

Eu tenho essa planilha que começou como uma ajuda tola para um jogo (Mafia Wars 2), mas se transformou em uma complicada pergunta sobre planilhas.

No jogo seu personagem tem 9 "slots" para armas e armaduras, 1 para cada "tipo": Arma Leve, Arma Pesada, Body Armor, Armadura Principal, etc. Então eu fiz uma lista de todas as armas e armaduras disponíveis no jogo, 1 item por linha. Exemplo:

SHOP        ITEM TYPE       ITEM NAME       ATK DEF PRICE   EQUIPPED?
Marketplace Weapon Light    Konrad Knife    16  5   5.500
Marketplace Weapon Light    Ice Queen       19  6   8.200
Marketplace Armor Body Up   Layered Polym   0   31  8.600
Marketplace Armor Body Up   Full Shield     7   42  17.650
Marketplace Weapon Heavy    Konrad Bullpup  53  25  24.500
Marketplace Weapon Heavy    Full Moon Blow  73  12  24.500  x
Marketplace Armor Body Low  Knee Pads       17  26  14.200  x
Marketplace Armor Body Low  Army Boots      15  55  24.500
Bone Yard   Weapon Light    Bone Launcher   41  2   9.400   x   
Neon Strip  Vehicle Ground  Supercharged    41  34  24.500
Dead End    Weapon Heavy    Sharp Sickle    21  5   24.500
Dead End    Armor Body Low  Unholy Boots    5   36  15.000
Dead End    Armor Head      Hockey Mask     5   18  15.900  x

As últimas colunas são uma indicação dos itens que eu já comprei e equipei (marcados com "x"). O que eu preciso é uma fórmula que, para cada "slot" (tipo de item), retorna informações relacionadas ao item desse tipo que estou usando. Isso seria:

ITEM TYPE       SHOP NAME   ITEM NAME       ATK DEF PRICE
Weapon Light    Bone Yard   Bone Launcher   41  2   9.400
Weapon Heavy    Marketplace Full Moon Blow  73  12  24.500
Weapon Special  --          --              --  --  --
Armor Body Up   --          --              --  --  --
Armor Body Low  Marketplace Knee Pads       17  26  14.200
Armor Head      Dead End    Hockey Mask     5   18  15.900
Vehicle Ground  --          --              --  --  --
Vehicle Water   --          --              --  --  --
Vehicle Air     --          --              --  --  --

Os tipos de item são fixos, para que possam ser codificados. Cada linha para um tipo de item.

Portanto, para a primeira linha de resultado, retornaria dados da linha em que a segunda coluna é "Arma leve" e a última coluna é "x". Basicamente, eu preciso de um LOOKUP (ou VLOOKUP, ou qualquer outra coisa) que use 2 critérios para encontrar uma determinada linha, o tipo de item e o marcador X.

A pergunta é: COMO?

Estou usando o OpenOffice Calc 3.2.1, mas como ele compartilha tantas funções com o MS Excel, as respostas para o Excel também são boas (desde que ele use somente fórmulas comuns, VBScript ou Macros ou VBA, etc.)

Por último, mas não menos importante, sugestões / soluções para reorganizar os dados para facilitar a solução deste problema também são bem-vindas.

Obrigado!

    
por MestreLion 10.11.2011 / 21:54

1 resposta

1

Veja como procurar o nome da loja para cada item da sua tabela. Se a primeira tabela for encontrada em A1:G14 e a segunda tabela que você está preenchendo for encontrada em K1:Q10 , você poderá usar a seguinte fórmula em L2 para procurar o nome da loja do item de tipo equipado em K2 :

=IFERROR(INDEX($A$1:$A$14,MIN(IF($B$2:$B$14=K2,IF($G$2:$G$14="x",ROW($B$2:$B$14),1000000),1000000))),"--")

Insira a fórmula como uma fórmula de matriz pressionando Ctrl + Deslocar + Enter . Se feito corretamente, a fórmula aparecerá encapsulada em {=...} . Esta fórmula pode ser preenchida na coluna.

Para adaptar esta fórmula para preencher as outras colunas, você deve alterar o primeiro argumento da fórmula INDEX para a coluna apropriada na primeira tabela. Por exemplo, para encontrar o nome do item, você usaria $C$1:$C$14 como o primeiro argumento da fórmula INDEX .

EDITAR:

Bem, acabei de verificar o OpenOffice Calc e, infelizmente, ele não suporta IFERROR . Então aqui está uma versão mais longa e mais estranha da fórmula que funcionará no OO Calc:

=IF(ISERROR(INDEX($A$1:$A$14;MIN(IF($B$2:$B$14=K2;IF($G$2:$G$14="x";ROW($B$2:$B$14);1000000);1000000))));"--";INDEX($A$1:$A$14;MIN(IF($B$2:$B$14=K2;IF($G$2:$G$14="x";ROW($B$2:$B$14);1000000);1000000))))

Isso também deve ser inserido como uma fórmula de matriz pressionando Ctrl + Shift + Enter. Tenha em atenção que tem de adaptar ambas INDEX fórmulas quando utilizar isto noutras colunas.

    
por 13.11.2011 / 03:22