XL 2019 Combinaison de formule Index et Equiv(Vrai;X:X)

Spadino

XLDnaute Nouveau
Bonjour à tous,

je voudrais combiner deux formules qui theoriquement devraient me donner le résultat suivant (si je ne me trompe pas) :

EQUIV(VRAI;C4:10<>"";0) : donne la position de la prochaine valeur non vide dans la matrice C4:C10
INDEX(C17:C65540;EQUIV(VRAI;C4:C10<>"";0)) : donne la valeur de la prochaine cellule non vide dans la matrice C4:C10

Ces deux formules m'affichent #VALEUR! à execution, et je ne comprends vraiment pas.

Mon idée c'est de combiner les 2 pour calculer la moyenne entre deux valeurs separés par un nombre variable de cellules vides à chaque fois. (un fichier joint pour expliquer)

Sincères Mercis de votre aide.
 

Pièces jointes

  • Excel formule.xlsx
    20.9 KB · Affichages: 9

Lolote83

XLDnaute Barbatruc
Bonjour SPADINO,

Concernant votre première formule
EQUIV(VRAI;C4:10<>"";0)
Celle-ci doit être valider par CTRL + MAJ + ENTER car matricielle

Concernant votre deuxième formule
INDEX(C17:C65540;EQUIV(VRAI;C4:C10<>"";0))
Un Index Equiv doit obligatoirement porter sur une plage identique (Ici Index C17:C65540 et Equiv C4:C10) donc plages de longueurs différentes.

Cependant, n'ayant pas réussi avec ces formules, j'ai fait donc un tableau intermédiaire qui utilise la fonction Index PETITE VALEUR puis de ce tableau j'en ai fait la colonne F.
C'est un peu tirer par les cheveux mais cela à l'air de fonctionner. Il y a certainement plus simple.
Voir le fichier en retour
Cordialement
Lolote83
 

Pièces jointes

  • Copie de SPADINO - Excel formule.xlsx
    24.5 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,
Dans le fichier joint vous trouverez dans les 3 colonnes qui suivent votre tableau les fonctions suivantes. je ne les ai pas assemblées pour que vous puissiez les étudier individuellement.

Trouver le prochain nombre
=AGREGAT(15;6;$C4:$C24/($C4:$C24>0);1)
Trouver la ligne du prochain nombre
=AGREGAT(15;6;LIGNE($C4:$C24)/($C4:$C24>0);1)

Agregat est une fonction, disponible sous excel 2010 et permettant d'appliquer une fonction statistique sur une plage de données en evitant les erreurs internes au calculs (#DIV/0! par exemple) et sans avoir besoin de validation matricielle.

Dans les deux exemples ci-dessous, elle utilise la fonction Petite.Valeur.
Vous pouvez remplacer Agregat par la fonction (pour la ligne 3) :
PETITE.VALEUR(SI($C4:$C24<>"";$C4:$C24);1)
Qui elle devra être valider par CTRL+MAJ+ENTREE

cordialement
 

Pièces jointes

  • Excel formule.xlsx
    29.1 KB · Affichages: 6

Spadino

XLDnaute Nouveau
Rebonjour,

Merci beaucoup les amis pour vos Reponses, au fait, le fait que vous m'ayez preciser que c'est une formule matricielle qui fonctionne avec CRTL MAJ ENT, m'a mis sur le bon chemin,

=SI(C4<>"";((INDEX(C5:C22;EQUIV(VRAI;C5:C22<>"";0))-C4)/EQUIV(VRAI;C5:C22<>"";0));D3)

Du coup cette formule permet exactement ce que je souhaitais faire ! Ceci dit je suis très content de connaitre la fct AGREGAT et PETITE.VALEUR
 

Pièces jointes

  • Excel formule (1).xlsx
    25.3 KB · Affichages: 5

Lolote83

XLDnaute Barbatruc
Re bonjour,
Parfait si l'astuce de la formule matricielle a fonctionnée.
Cependant, dans votre fichier, à/c de la ligne 16 (onglet feuil2) vous trouvez 124.8 alors que dans l'exemple vous trouviez 78.
Or dans mon fichier et dans celui de Hasco, on avait bien 78.
C'est juste pour faire remonter l'information
@+ Lolote83
 

Spadino

XLDnaute Nouveau
Re bonjour,
Parfait si l'astuce de la formule matricielle a fonctionnée.
Cependant, dans votre fichier, à/c de la ligne 16 (onglet feuil2) vous trouvez 124.8 alors que dans l'exemple vous trouviez 78.
Or dans mon fichier et dans celui de Hasco, on avait bien 78.
C'est juste pour faire remonter l'information
@+ Lolote83
C'est normal, j'ai enlevé des dates et donc réduit le nbre de cellules vides donc le resultat est plus grand ! Merci pour l'info en tout cas ;)
 

Discussions similaires