Formule Excel: obtenir la première valeur non vide dans une liste -

Table des matières

Formule générique

(=INDEX(range,MATCH(FALSE,ISBLANK(range),0)))

Sommaire

Pour obtenir la première valeur non vide (texte ou nombre) dans une dans une plage à une colonne, vous pouvez utiliser une formule matricielle basée sur les fonctions INDEX, MATCH et ISBLANK. Dans l'exemple illustré, la formule en D10 est:

(=INDEX(B3:B11,MATCH(FALSE,ISBLANK(B3:B11),0)))

Remarque: il s'agit d'une formule matricielle et doit être saisie avec Ctrl-Maj-Entrée.

Explication

Donc, l'essentiel du problème est le suivant: nous voulons obtenir la première cellule non vide, mais nous n'avons pas de moyen direct de le faire dans Excel. Nous pourrions utiliser RECHERCHEV avec un caractère générique * (voir le lien ci-dessous), mais cela ne fonctionnera que pour le texte, pas pour les nombres.

Nous devons donc créer les fonctionnalités dont nous avons besoin en imbriquant des formules. Pour ce faire, utilisez une fonction de tableau qui "teste" les cellules et renvoie un tableau de valeurs TRUE / FALSE que nous pouvons alimenter dans la fonction MATCH.

En travaillant de l'intérieur vers l'extérieur, la fonction ISBLANK évalue les cellules de la plage B3: B11 et renvoie un tableau qui ressemble à ceci:

(TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE)

Chaque FALSE représente une cellule de la plage qui n'est pas vide.

Ensuite, MATCH recherche FALSE dans le tableau et renvoie la position de la première correspondance trouvée, dans ce cas 2. À ce stade, la formule de l'exemple ressemble maintenant à ceci:

(=INDEX(B3:B11,2,0)))

Enfin, la fonction INDEX prend le relais et obtient la valeur à la position 2 dans le tableau, qui est 10.

Première valeur de longueur non nulle

Pour obtenir la première valeur de longueur non nulle, vous pouvez inclure la fonction LEN comme ceci:

(=INDEX(range,MATCH(TRUE,LEN(range)>0,0)))

Première valeur numérique

Pour obtenir la première valeur numérique d'une liste, vous pouvez adapter la formule pour utiliser la fonction ISNUMBER, puis modifier la logique pour qu'elle corresponde à TRUE au lieu de FALSE:

(=INDEX(range,MATCH(TRUE,ISNUMBER(range),0)))

Il s'agit également d'une formule matricielle et doit être saisie avec Ctrl + Maj + Entrée.

Bons liens

Rechercher le premier élément non vide dans une liste (chandoo)

Articles intéressants...