web-dev-qa-db-fra.com

Rechercher avec INDEX et MATCH avec deux critères

J'essaie de réaliser une recherche de base en utilisant INDEX et MATCH. Ma mise en page est:

 Feuille 1 
 NOM | SITE | DATE 
 
 Feuille 2 
 NOM | SITE | RENDEZ-VOUS AMOUREUX

Je veux que la colonne "SITE" de la feuille 1 se remplisse automatiquement avec le SITE de la feuille 2 où NOM et DATE correspondent.

Ce que j'ai essayé

=INDEX('Sheet2'!B:B,MATCH(A1,'Sheet2'!A:A,0))

Cela va correspondre à NAME, mais comment puis-je incorporer un MATCH supplémentaire dans la formule pour apparier both NAME et DATE?

6
user1017882

Je suggère que la solution classique aux problèmes de ce type consiste à concaténer la paire de termes de recherche (c.-à-d. Une colonne auxiliaire) et à ajouter les paires concaténées au tableau de recherche. 

SO18767439 example

Dans l'exemple ci-dessus, la concaténation des éléments à rechercher (plutôt que des emplacements à rechercher) est effectuée «à la volée».

4
pnuts

Vous pouvez utiliser une "formule matricielle" comme celle-ci

=INDEX('Sheet2'!B:B,MATCH(1,(A1='Sheet2'!A:A)*(C1='Sheet2'!C:C),0))

CTRL+SHIFT+ENTER

.... ou vous pouvez ajouter une autre fonction INDEX afin qu’il ne soit pas nécessaire de le "saisir dans un tableau", c.-à-d.

=INDEX('Sheet2'!B:B,MATCH(1,INDEX((A1='Sheet2'!A:A)*(C1='Sheet2'!C:C),0),0))

ou une autre façon est d'utiliser LOOKUP comme ça

=LOOKUP(2,1/(A1='Sheet2'!A:A)/(C1='Sheet2'!C:C),'Sheet2'!B:B)

Cette dernière méthode vous donnerait le match dernier s'il y a plus d'un ......

12
barry houdini

Voici la solution sans utiliser de tableau ni utiliser de colonne auxiliaire:

<i>=INDEX(Table[returnColumnName], 
MATCH(1, INDEX((Table[lookupColumn1] = "arraysAreSlow") * 
(Table[lookupColumn2] = "avoidWherePossible"), 0, 1), 0))</i>

Voici une solution plus avancée qui effectue une recherche sur la grille:

<i>=INDEX(Table,
MATCH(1, INDEX((Table[lookupColumn1] = "arraysAreSlow") * 
(Table[lookupColumn2] = "avoidWherePossible"), 0, 1), 0),
MATCH("returnColumnName", Table[#Headers],0))</i>
0
Simon Nuss