La fonction Equiv() Equiv(ValeurCherchée,champ;0 ou 1ou -1) donne la position de la valeur cherchée dans le
champ (1,2,3,..) Sur l'exemple on cherche le nom du vendeur qui a réalisé le meilleur CA: Noms de champ En F1, =Max(ca) donne le meilleur CA Avec une seule formule: =INDEX(Noms;EQUIV(MAX(ca);ca;0)) Remarque: Le moins cherSur l'exemple, on recherche, pour chaque produit, le nom du fournisseur le moins cher: =EQUIV(MIN(B3:E3);B3:E3;0) donne la position
du prix minimum dans B3:E3 (3) Valeur en fonction de 2 critèresOn recherche un prix en fonction d'une désignation de produit et d'un mode de conditionnement. EquivIndexProduits En C3, =EQUIV(A4;Designation;0) donne
la position du produit dans la table Désignation Le prix de la table Prix s'obtient par : =INDEX(Prix;C3;C7)
=INDEX(Prix;EQUIV(A3;Designation;0);EQUIV(A7;Conditionnement;0)) Positionnement sur valeur inférieure ou supérieure-Les points sont en ordre croisssant et
on veut se positionner sur la valeur inférieure (1500
pour la valeur cherchée=1505). -Les points sont en ordre croisssant et on veut se positionner sur la valeur supérieure (1600 pour la valeur cherchée=1505). =INDEX(val;EQUIV(VRAI;Points>=B13;0);EQUIV(B12;an;0)) -Les points sont en ordre décroisssant et on veut se positionner sur la valeur supérieure (1600 pour la valeur cherchée=1505). =INDEX(val;EQUIV(B13;points;-1);EQUIV(B12;an;0)) -Les points sont en ordre décroisssant et on veut se positionner sur la valeur inférieure (1500 pour la valeur cherchée=1505). =INDEX(val;EQUIV(VRAI;points<=B13;0);EQUIV(B12;an;0)) Position du dernier nombre dans un vecteur ligne ou colonne=EQUIV(9^9;Champ) Position de la dernière chaîne dans un vecteur ligne ou colonne=EQUIV("zz";champ) Position du premier libellé dans une table=Equiv("*";champ;0) donne la position du premier libellé d'une colonne. On cherche la position du nombre immédiatement supérieurLa liste est triée. =EQUIV(VRAI;A7:A11>=D7;0) Recherche de la valeur supérieure dans une table non triée=MIN(SI(B4:B7>=B2;B4:B7)) La valeur la plus proche (inférieure ou supérieure)=MIN(SI(ABS(Champ-valeur)=MIN(ABS(Champ-valeur));Champ)) Autre exempleOn veut le prix pour la date la plus proche d'une date Valeur pour la date plus proche supérieure Recherche le dernier=INDEX(Prix;MAX(SI((produit=A2);LIGNE(INDIRECT("1:"&LIGNES(produit)))))) Si la table est triée par produit =INDEX(Prix;EQUIV(A2;produit;0)+NB.SI(produit;A2)-1) On veut le dernier prix d'achat (dernière date)pour un produitLes dates d'achat pour chaque produit sont dans l'ordre croissant: Date dernier achat: =SI(NB.SI(produit;A2);MAX(SI((produit=A2);date));"")
Valider avec Maj+ctrl+entrée Les dates pour chaque produit ne sont pas dans l'ordre croissant et Il n'y a qu'un prix par jour pour chaque produit Date dernier achat : =SI(NB.SI(produit;A2);MAX(SI((produit=A2);date));"") Recherche avec 2 critères sur table en colonne (prix produit fournisseur )On recherche le prix d'un produit chez un fournisseur.
Le même produit peut exister chez plusieurs fournisseurs. =INDEX(prix;EQUIV(F2;DECALER(produit;EQUIV(E2;fourn;0)-1;;SI(EQUIV("zzz";fourn)=EQUIV(E2;fourn;0);LIGNES(produit)-EQUIV(E2;fourn;0)+1;EQUIV("*";DECALER(fourn;EQUIV(E2;fourn;0););0)));0)+EQUIV(E2;fourn;0)-1) Autre exemple EquivDecaler =INDEX(prix;EQUIV(F2;DECALER(tarif;EQUIV(E2;date)-1;; Sous total=SI(A2<>"";SOMME(DECALER(B2;;;SI(EQUIV(A2;nom;0)<>EQUIV("zzz";nom);EQUIV("*";A3:A$12;0);LIGNES(nom)-EQUIV(A2;nom;0)+1));0);"") Recherche suivant plusieurs critères dans une BDDans une BD, on cherche pour une personne et un examen la date la plus récente ainsi que le statut. En G2: En H2: Jokers * et ? dans Equiv()Les jokers * et ? peuvent être utilisés dans une recherche avec Equiv() =INDEX(Age;EQUIV(E2;Nom;0)) Si le champ de recherche comporte des caractères spéciaux *,? , les faire précéder du caractère ~: =INDEX(Prix;EQUIV(SUBSTITUE(E2;"*";"~*");Code;0)) Recherche sur des chaînes>255 caractèresEquiv() ne fonctionne pas pour des chaînes >255 caractères. On peut utiliser la formule ci dessous pour trouver la position de la cellule qui contient engin de manutention =MAX(SI(ESTNUM(CHERCHE(C2;champ));LIGNE(INDIRECT("1:"&LIGNES(champ))))) Sur cet exemple, on recherche un code associé à une valeur=INDEX(Codes;EQUIV("*;"&A2&";*";";"&Valeurs&";";0)) On recherche un code dans un texteIl faut retrouver le code présent dans le texte (ASA,APA,DPD) =INDEX(Codes;EQUIV(1;EQUIV("*"&Codes&"*";A2;0);0)) ou =INDEX({"ASA";"APA";"DPD"};EQUIV(1;EQUIV("*"&{"ASA";"APA";"DPD"}&"*";A2;0);0)) Si le nombre de caractères dans une cellule dépasse 255 caractères=trouvecode(A2;Valeurs;Codes) Function TrouveCode(v, valeurs, codes) Recherche sur une partie de code-La table contient des codes aa,bb,cc,... Le code cherché est bb rouge Pour obtenir le prix =INDEX(prix;EQUIV(1;EQUIV(code&"*";A2;0);0)) ou =SI(SOMME(NB.SI(A2;"*"&Code))=0;"Inconnu";INDEX(prix;EQUIV(1;NB.SI(A2;code&"*");0)))) RechPartieCode
Autre exempleOn veut extraire Schmidtt de location B. Schmitt du 31/05 au 04/06/10 =INDEX(ref;EQUIV(1;NB.SI(A2;"*"&ref&"*");0))
Autre exemplePour FIDJI BLACK/RED VENERE T.48, on recherche la référence associée à BLACK/RED En B2: =INDEX(ref;EQUIV(1;NB.SI(A2;"*"&couleur&"*");0)) On recherche un code dans un texteIl faut retrouver le code présent dans le texte (ASA,APA,DPD) =INDEX(Codes;EQUIV(1;EQUIV("*"&Codes&"*";A2;0);0)) ou =INDEX({"ASA";"APA";"DPD"};EQUIV(1;EQUIV("*"&{"ASA";"APA";"DPD"}&"*";A2;0);0)) Convertit les marques en majusculesConvertitMajuscules On extrait un mois dans un texteIl faut extraire le mois présent dans le texte en A1 (mars). Le 23 mars 1995 =INDEX(TEXTE(DATE(;LIGNE(1:12);1);"mmmm");EQUIV(1;NB.SI(A1;"*"&TEXTE(DATE(;LIGNE(1:12);1);"mmmm")&"*");0)) On extrait un jour dans un texteIl faut extraire le jour présent dans le texte en A1 (jeudi). Le jeudi 14 mars 2012 =INDEX(TEXTE(DATE(;1;LIGNE(1:7));"jjjj");EQUIV(1;NB.SI(A1;"*"&TEXTE(DATE(;1;LIGNE(1:7));"jjjj")&"*");0)) On recherche les produits d'une catégorie=INDEX(produits;LIGNES($1:1);EQUIV($A$2;Catégorie;0)) En matriciel Autre exempleOn recherche un coefficient Mini en fonction d'un grade (B2) et d'un échelon (C2). - =EQUIV($B2;$G$1:$G$30;0) donne la ligne
du grade dans le tableau G1:G30 - IndexEquiv - Variante =INDEX($G$1:$M$30;EQUIV($B2;$G$1:$G$30;0)+2; Fonction perso EquivCoulFond(coul As Range, champ As Range)Donne la position d'une couleur dans un champ colonne ou ligne. Function equivCoulFond(coul As Range, champ As Range) Recherche avec des caractères accentuésLe nom cherché dans une table peut être frappé avec ou sans accent. =INDEX(Villes;EQUIV(sansaccentm(A2);sansaccentm(Noms);0))
|
|