Index equiv + decaler pour gérer les doublons

Bonjour

J'utilise un index equiv pour aller rechercher une valeur d'une bdd (nommée dimensionnement) organisée ainsi

image

J'utilise cette formule

=(index(Dimensionnement!$B$3:$LI$456;EQUIV($B3;Dimensionnement!$B$3:$B$456;0);EQUIV($B$1;Dimensionnement!$B$3:$LI$3;0)))

où B3 est le nom que je recherche et B1 est la date que je recherche

Le souci est que je peux avoir des doublons au niveau des noms. Et si la valeur de mon index equiv est nulle, je veux prendre la valeur suivante.

Je veux donc écrire une formule de la forme : si mon index equiv donne un résultat nul, alors donner la valeur suivante sur le même nom

Je dois donc utiliser la formule décaler dans mon index equiv, mais je ne parviens pas à la positionner dans mon index equiv

Désolé, étant sur un serveur privé, je ne peux pas fournir de lien. Mais si besoin je peux créer un exemple en .XLS

Bonjour,

Tu peux avoir toutes les dates de ta recherche en utilisant RECHERCHEX et FILTER :

=FILTER(RECHERCHEX(B1;dimensionnement!B1:Z1;dimensionnement!B:Z);dimensionnement!A:A=B3)

Ou tu peux ajouter INDEX pour limiter à un seul résultat.

Cordialement,

Hello, en effet ca marche bien mais dans les cas où il trouve plusieurs valeurs, j'ai besoin de plusieurs lignes pour le même nom.

Sinon j'ai un #REF

Le résultat n'a pas été développé, pour ne pas écraser les données de D56.

Et si je supprime la donnée en dessous, je vais avoir tous les résultats de la rechercheX

Je n'ai besoin que de la valeur non vide. Il y a moyen d'ajouter la fonction UNIQUE avec ESTVIDE?

Ou tu peux ajouter INDEX pour limiter à un seul résultat.

Tu as essayé ça ?

=INDEX(FILTER(RECHERCHEX(B1;dimensionnement!B1:Z1;dimensionnement!B:Z);dimensionnement!A:A=B3);1;1)

J'ai peut-être mal compris mais c'est difficile sans fichier d'exemple ...

11index-decale.xlsx (18.86 Ko)

Cette dernière formule va me donner la première valuer trouvée comme pour l'index equiv de base.

Je conçois que sans fichier ce n'est pas évident à appréhender.

J'ai donc fait une version simplifiée sous excel afin de pouvoir donner de la visibilité

Dans mon outil dimensionnement, je peux avoir des noms en double. J'ai par exemple mis nom2 et nom3 sur 2 lignes que j'ai surligné

Dans mon onglet index, je récupère les données de la matrice, mais si la valeur est nulle comme pour nom2 qui est vide en ligne 13 mais avec une valeur de 1 en ligne 28, je veux qu'il puisse me sélectionner la 2nde valeur qui est non vide.

Pour nom3 il est en doublon mais la première valeur vaut 1 donc mon index equiv suffit.

Est-ce que les données de la colonne test sont celles que tu souhaites obtenir ?

image

oui

Ok, donc j'ai pour toi une formule qui fait directement toute la colonne

A placer en D3 :

=MAP(A3:A32;LAMBDA(nom;SIERREUR(INDEX(LET(resultats;FILTER(RECHERCHEX(B$1;dimensionnement!C2:H2;dimensionnement!C:H);dimensionnement!B:B=nom);FILTER(resultats;resultats<>""));1;1))))

C'est rare que j'utilise ce smiley :

Elle est folle cette formule! Je ne connaissais même pas MAP, LAMBDA et LET

Ca fait en plus office de arrayformula

Bon j'avoue ne pas avoir compris la formule mais ca marche impeccable!

Un immense merci.

De rien

Je ne connaissais même pas MAP, LAMBDA et LET

Ca fait en plus office de arrayformula

C'est beaucoup plus efficace et pratique que ARRAYFORMULA, n'hésite pas à aller jeter un œil à ces nouvelles fonctions : https://www.sheets-pratique.com/fr/fonctions

Et pour toi qui utilises Apps Script, sache aussi que tu as l'équivalent de ces fonctions en Apps Script

Rechercher des sujets similaires à "index equiv decaler gerer doublons"