Correspondência de índice em 2 condicionais?

0

Dados:

Eupoderiausaralgumaajudacomumafórmuladecorrespondênciadeíndicebaseadaem2itenscondicionais.Paraoconjuntodedadosanexado,precisoconfigurarumafórmula(etorná-larepetívelparaoutraslojasedatasfuturas),queobtémonúmerodedadoscombasenadataespecífica(11/9/15,nestecaso)eparaloja#414.Nesteexemplo,quero"132" para ser a resposta retornada. Espero que isso faça sentido.

Qualquer ajuda seria apreciada!

    
por Matt 12.11.2015 / 19:23

1 resposta

1

Aqui estão duas soluções, correspondendo às minhas sugestões nos comentários sobre a questão. Para ambos, suponho que A1: C30 contenha os dados da pergunta.

Usando uma função de banco de dados

As primeiras soluções usam as funções de banco de dados do Excel. Todas as funções do banco de dados tratam um intervalo de células como um banco de dados, onde cada linha é um registro e cada coluna é um campo. A primeira linha contém os nomes das colunas. As funções do banco de dados também usam outro intervalo de células como critério de pesquisa, em que a primeira linha é o nome da coluna e a segunda linha é o critério real. Dado que, em E1: F2 (ou em qualquer lugar, mas é onde eu coloquei para esses exemplos) coloque:

       E         F
 1   Store #     Date
 2       414  11/9/15

Esse é o critério. Então, em E4 (ou onde quer), coloque =DGET(A1:C30,"Data",E1:F2) . Isso usa a função de banco de dados DGET para pesquisar o valor de uma coluna, dado um banco de dados (o A1:C30 ), um nome de coluna ( "Data" ) e critérios ( E1:F2 ). Nesse caso, isso resultará em 132 . Alterar o conteúdo de F2 para 11/2/15 alterará o valor DGET para 55 , etc.

Esta é talvez a maneira mais limpa, porque é fácil estendê-lo se você tiver colunas adicionais nos dados e nos critérios que deseja usar para corresponder a essas colunas. Você também pode reutilizar partes dos critérios para fazer outras coisas. Por exemplo, =DSUM(A1:C30,"Data",E1:E2) somará todos os valores de Dados para a loja 414, =DSUM(A1:C30,"Data",F1:F2) resumirá todos os valores de Dados para 11/9/15, etc. Ele também não assume nada sobre a ordem na qual as colunas são classificadas. A desvantagem é que se você não usar muito as funções do banco de dados (como eu :-)), você terá que reler a ajuda sobre elas toda vez que usá-las (como eu fiz para isso :-)) , então talvez não seja tão sustentável.

Usando fórmulas de indexação e pesquisa

A segunda maneira combina algumas das fórmulas de pesquisa do Excel.

Configure uma planilha igual à anterior, os dados da pergunta em A1: C30 e os critérios em E1: F2. Observe que, neste caso, usaremos apenas E2 e F2, mas você pode deixar E1 e F1 como rótulos para o que está em E2: F2.

Então, em E4, coloque:

 =VLOOKUP(F2,INDEX(B:B,MATCH(E2,A:A,0),1):INDEX(C:C,MATCH(E2,A:A,1),1),2)

Quebrando isso de dentro para fora:

MATCH(E2,A:A,0)

Essa é a primeira correspondência ( 0 ) na primeira coluna ( A:A ) que corresponde à loja # em E2 . Ele retorna a posição relativa e, nesse caso, porque toda a primeira coluna é a matriz de pesquisa, a posição será o número da primeira ocorrência do store # em E2. Com os dados de exemplo, se você colocar isso em uma célula, ele terá um valor de 7 .

INDEX(B:B,MATCH(E2,A:A,0),1)

Isso gera uma referência a uma célula na segunda coluna ( B:B ) na linha determinada pelo MATCH e coluna 1 . Se você colocar isso em uma célula por si só, o valor será o valor da célula referenciada, que com o exemplo, será o valor de B7 ou 11/10/14 .

MATCH(E2,A:A,1)

Isso encontra a última correspondência (o 1 ) na primeira coluna que corresponde à loja #. Se colocar isso em uma célula, o valor será 25 .

INDEX(C:C,MATCH(E2,A:A,1),1)

Isso gera uma referência a uma célula na terceira coluna ( C:C ) na linha determinada pelo MATCH e coluna 1 . Se você colocar isso em uma célula por si só, o valor será o valor da célula referenciada, que com o exemplo, será o valor de C25 ou 132 .

INDEX(B:B,MATCH(E2,A:A,0),1):INDEX(C:C,MATCH(E2,A:A,1),1)

Isso combina as duas fórmulas INDEX para gerar uma referência para pesquisar a data. Com os dados de exemplo, será B7: C25 (se você colocar em uma célula por si só, você obterá um #VALUE! , porque isso resulta em mais de um valor. Se você colocá-lo em uma célula por si só como um fórmula de matriz, você obterá o valor da célula superior esquerda ou 11/10/14 ).

=VLOOKUP(F2,INDEX(B:B,MATCH(E2,A:A,0),1):INDEX(C:C,MATCH(E2,A:A,1),1),2)

Isso combina tudo. Ele usa VLOOKUP para procurar a data de F2 , no intervalo de células gerado pelas duas fórmulas INDEX (B7: C25) e para retornar a segunda coluna (a% final2) na linha correspondente .

Voilá!

    
por 12.11.2015 / 23:01