MATCH (EQUIV dans un Google Sheets en français) renvoie la position d'une valeur dans une ligne ou une colonne, et non la valeur elle-même. Seule, elle répond à « où se trouve cet élément dans la liste ? » et « est-il dans la liste ? ». Associée à INDEX, elle forme la recherche la plus flexible de Google Sheets.
Syntaxe
=MATCH(search_key, range, [search_type])
search_key: La valeur à trouver.range: Une seule ligne ou une seule colonne dans laquelle chercher. Une plage de plusieurs colonnes renvoie#N/A.search_type[Facultatif] :0correspondance exacte, aucun tri nécessaire. C'est presque toujours ce qu'il faut.1(par défaut) trouve la plus grande valeur inférieure ou égale à la clé. La plage doit être triée par ordre croissant.-1trouve la plus petite valeur supérieure ou égale à la clé. La plage doit être triée par ordre décroissant.
Notez que la valeur par défaut est 1, une correspondance approximative. Si vous omettez le troisième argument et que les données ne sont pas triées, vous pouvez obtenir une mauvaise position sans erreur. Écrivez 0 explicitement pour les recherches exactes.
Exemples de base
Avec des noms de fruits en A1:A5 (pomme, banane, cerise, datte, framboise) :
=MATCH("cerise", A1:A5, 0)renvoie3.=MATCH("figue", A1:A5, 0)renvoie#N/A, car il n'y a pas de correspondance exacte.=MATCH("ce*", A1:A5, 0)renvoie3. Avec0, les caractères génériques fonctionnent (*pour n'importe quel texte,?pour un seul caractère).
Le résultat est la position dans la plage. Si la plage est A3:A7, une correspondance dans la première cellule renvoie 1, et non 3.
Correspondance approximative pour des tranches
Avec une liste triée de seuils en A1:A5 (0, 60, 70, 80, 90) :
=MATCH(84, A1:A5, 1)
Renvoie 4, la position de 80, le plus grand seuil qui ne dépasse pas 84. Avec INDEX, cela transforme une note en mention sans IF imbriqués :
=INDEX({"F", "D", "C", "B", "A"}, MATCH(84, A1:A5, 1))
Renvoie B.
MATCH avec INDEX
MATCH trouve la ligne, INDEX renvoie la valeur qui s'y trouve :
=INDEX(C2:C100, MATCH("Ben", A2:A100, 0))
Cette formule renvoie l'élément de la colonne C situé sur la ligne où Ben apparaît dans la colonne A. Elle fonctionne que la clé soit d'un côté ou de l'autre du résultat, et c'est la base de la recherche à double entrée :
=INDEX(B2:M20, MATCH("Nord", A2:A20, 0), MATCH("Mars", B1:M1, 0))
Voir INDEX pour en savoir plus.
Formules pratiques
Vérifier si une valeur existe
=ISNUMBER(MATCH(E2, A2:A100, 0))
Renvoie TRUE si la valeur est dans la liste et FALSE sinon. MATCH renvoie un nombre quand elle trouve et #N/A sinon, et ISNUMBER convertit cela en un vrai/faux propre. C'est pratique pour la validation de données et la mise en forme conditionnelle.
Trouver une colonne par son en-tête
=MATCH("Chiffre d'affaires", A1:Z1, 0)
Renvoie la position de colonne de l'en-tête Chiffre d'affaires. Passez-la à INDEX pour qu'une formule continue de fonctionner même si quelqu'un réorganise les colonnes.
Trouver la position du maximum
=MATCH(MAX(B2:B100), B2:B100, 0)
Renvoie l'emplacement de la plus grande valeur, que INDEX peut utiliser pour obtenir le libellé voisin :
=INDEX(A2:A100, MATCH(MAX(B2:B100), B2:B100, 0))
Premier élément qui remplit une condition
MATCH(TRUE, ARRAYFORMULA(condition), 0) renvoie la position du premier élément pour lequel une condition est vraie, par exemple la première valeur supérieure à 100 :
=MATCH(TRUE, ARRAYFORMULA(B2:B100 > 100), 0)
Erreurs courantes
#N/A. Pas de correspondance. Pour les recherches exactes, vérifiez les espaces superflus (utilisezTRIM) et les différences texte/nombre. Vérifiez aussi que vous avez bien utilisé0.- Mauvaise position, aucune erreur. Vous avez omis
search_type(donc1par défaut) sur des données non triées. Ajoutez0. #N/Aavec une plage de plusieurs colonnes.MATCHne cherche que dans une seule ligne ou une seule colonne.
Questions fréquentes
MATCH tient-elle compte de la casse ? Non. "Pomme" et "pomme" correspondent. Utilisez EXACT dans une formule matricielle pour une comparaison sensible à la casse.
Que se passe-t-il si la valeur apparaît plusieurs fois ? MATCH renvoie la position de la première occurrence.
Quelle différence entre MATCH et VLOOKUP ? VLOOKUP renvoie une valeur de la ligne correspondante. MATCH renvoie seulement la position, ce qui la rend plus flexible et réutilisable.
Fonctions associées
INDEX: Renvoie la valeur située à une position, la partenaire habituelle deMATCH.VLOOKUP: Recherche verticale dans une plage.HLOOKUP: Recherche horizontale dans une plage.XLOOKUP: Une recherche moderne qui remplace les deux.