Problème avec EQUIV

Bonjour,

J'utilise cette formule pour déterminer le numéro de la colonne qui correspond à mes critères de recherche:

{=EQUIV(1;($UB$2:$UL$2=$E$6+1)*(--($UB$4:$UL$4={"BB";"BF"}));0)}

Cette formule ne fonctionne pas car la première matrice à une seule colonne et la deuxième matrice à 2 colonnes. Résultat:

{=EQUIV(1;{0.0.0.0.1.0.0.0.0.0.0}*{0.0.0.0.0.1.0.0.0.0.0;0.0.0.0.0.0.0.0.0.0.0};0)}

La deuxième matrice est en rouge dans excel lorsque j'utilise F9 (j'ai jamais vu ca).

Est ce que vous auriez une piste de solution ?

Merci pour votre aide

Bonjour,

EQUIV te renvoie la position relative d'une valeur dans UNE matrice. Je ne vois pas comment il pourrait te renvoyer plusieurs positions dans plusieurs matrices...

Si tu ne postes pas un exemple de ton problème dans un fichier excel sans données confidentielles, ça va être dur de t'aider ...

Bonjour,

J'ai joints un fichier en exemple.

Voici ce que j'aimerai faire avec des formules matricielles:

  1. Chercher la date en N2+1 sur la ligne D2:K2
  2. Vérifier si dans la même colonne que la date trouvée, il y a sur la ligne D4:K4 le texte "BB" ou "BF" ou "BR"
  3. Si ces 2 conditions sont remplies, effectuer le calcul suivant: valeur en D5:K5 de la même colonne que la date trouvée * (si terme BF trouvé utilisé la valeur 12 ; si terme BB trouvé utilisé la valeur 30 ; si le terme BR trouvé utilisé la valeur 40)

Je trouve que les formules matricielles étaient commodes pour faire le calcul (exemple de calcul utilisé dans une autre formule: =SOMME(--(M5={"BF";"BB";"BR"})*({12;30;40})). Et je voulais utiliser la fonction EQUIV pour orienter tout le reste de mes calculs vers la bonne colonne du tableau.

J'ai des restrictions: toute la formule doit faire appel seulement aux données déjà présentes. Je ne peux pas ajouter de feuille de calcul ou de tableau supplémentaire (fichier déjà énorme). Et j'aimerais beaucoup faire appel aux formules matricielles.

Merci !

8exemple.xlsx (9.69 Ko)

Re,

Voilà, avec un vrai exemple, ça va quand même mieux.

SOMMEPROD est une fonction matricielle, mais n'a pas besoin d'être validée avec ctrl + shift + enter.

Mais puisque ça a l'air de te tenir vraiment à cœur, tu peux le faire tout de même, ça ne changera absolument rien.

=SOMMEPROD((D2:K2=N2+1)*((D4:K4="BF")*(D5:K5*12)+(D4:K4="BB")*(D5:K5*30)+(D4:K4="BR")*(D5:K5*40)))

J'ai trouvé une solution mais je me demande si on peut faire "plus simple":

=SOMME(--(INDEX($D$2:$K$5;3;EQUIV(1;--($D$2:$K$2=$N$2+1);0))={"BF";"BB";"BR"})*({12;30;40})*INDEX($D$2:$K$5;4;EQUIV(1;--($D$2:$K$2=$N$2+1);0)))

Super merci beaucoup, cela répond à mon poste ! On peut faire vraiment plus simple que ma solution...

Je vais "désactiver" l'autre demande.

Quand ta recherche ne porte que sur une ligne, tu peux remplacer INDEX($D$2:$K$5;3;

par INDEX($D$4:$K$4;;

Cela t'évite de devoir faire une gymnastique mentale à chaque fois, et te permet de ne sélectionner que les données que tu vas vouloir afficher.

Ton fichier est peut-être énorme parce que plein de fonctions ne sont pas optimisées ?

Surement !

C'est un fichier créer par une autre personne qui regroupe énormément de processus et je dois intégrer des nouvelles lignes de calculs sans toucher à la structure générale du fichier (pas de rajout de feuilles de calculs, de tableau...).

Merci pour l'idée concernant INDEX.

Il n'y a pas de possibilité de combiner la formule de vérification des termes avec ce genre de structure par exemple (M5={"BF";"BB";"BR"})*({12;30;40}) ?

Je ne comprends pas ce que tu entends par-là.

En fait faire une simplification de la formule en multipliant 2 matrices ensemble.

Mais j'imagine que ce n'est faisable si les matrices n'ont pas le même nombre d'argument (comme cet exemple (M5={"BF";"BB";"BR"})*({12;30;40})).

Si on remplace M5 par une plage comme M5:Z5 cela ne peut plus fonctionner.

Là comme ça, je n'ai rien d'évident qui me saute aux yeux.

Rechercher des sujets similaires à "probleme equiv"