=INDEX(A2:C6;3;2) renvoie la valeur de la troisième ligne et de la deuxième colonne de la plage A2:C6. Les positions se comptent depuis la cellule en haut à gauche de la plage : la ligne 3 de A2:C6 est donc la ligne 4 de la feuille. Changez le 3 ou le 2 et regardez le résultat se déplacer. INDEX porte le même nom en français et en anglais ; le tableau affiche les formules en anglais, avec des virgules, mais vous pouvez aussi les y taper en français, avec des points-virgules.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Row | Column | Result | |
| 2 | Apple | Fruit | $1.20 | 3 | 2 | Vegetable | |
| 3 | Pear | Fruit | $1.50 | ||||
| 4 | Carrot | Vegetable | $0.80 | ||||
| 5 | Bread | Bakery | $2.40 | ||||
| 6 | Milk | Dairy | $1.10 |
=INDEX(A2:C6;E2;F2)E2 contient le numéro de ligne et F2 le numéro de colonne. La ligne 3 est Carrot et la colonne 2 est Category, donc G2 affiche Vegetable. Mettez F2 à 1 pour obtenir le nom du produit, ou E2 à 6 pour voir #REF! : A2:C6 n'a que cinq lignes.
Syntaxe de INDEX
=INDEX(array, row_num, [column_num])
array(tableau) : la plage (ou la matrice) à lire.row_num(no_lig) : la ligne voulue, à partir de 1. Utilisez 0 pour toutes les lignes.column_num(no_col) : la colonne, à partir de 1. Facultatif quand la plage n'a qu'une colonne ou qu'une ligne ; utilisez 0 pour toutes les colonnes.
Sur une seule colonne, un nombre suffit : =INDEX(A2:A6;4) est le quatrième élément, Bread. Une seconde forme, =INDEX((A2:C3;A5:C6);1;1;2), choisit dans l'une de plusieurs plages ; elle sert rarement.
Obtenir le n-ième élément, ou le dernier
INDEX sur une seule colonne répond à "quel est l'élément numéro n". Combinée avec NBVAL (COUNTA en anglais), qui compte les cellules remplies, elle renvoie le dernier élément d'une liste qui s'allonge.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Product | Item number | 2 | |
| 2 | Apple | Nth item | Pear | |
| 3 | Pear | Last item | Milk | |
| 4 | Carrot | |||
| 5 | Bread | |||
| 6 | Milk |
=INDEX(A2:A6;NBVAL(A2:A6))D1 vaut 2, donc D2 renvoie Pear. NBVAL compte 5 produits, donc D3 renvoie le cinquième, Milk. Supprimez Milk et D3 renvoie Bread. En français, la formule de D3 s'écrit =INDEX(A2:A6;NBVAL(A2:A6)). Dans un vrai fichier, faites pointer les deux formules vers une plage plus longue comme A2:A1000 pour inclure les nouvelles lignes ; NBVAL ne fonctionne ainsi que si la colonne n'a pas de cellules vides au milieu.
Renvoyer une ligne ou une colonne entière avec 0
Un 0 comme numéro de ligne signifie "toutes les lignes", donc INDEX(B2:D5;0;2) est toute la deuxième colonne. Dans SOMME, MOYENNE ou MAX, cela fait le total d'une colonne choisie par son numéro.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Region | Jan | Feb | Mar | Month number | Total | |
| 2 | North | 4,200 | 3,900 | 4,800 | 2 | 15,200 | |
| 3 | South | 3,100 | 3,600 | 3,300 | |||
| 4 | East | 5,200 | 4,700 | 5,600 | |||
| 5 | West | 2,800 | 3,000 | 3,400 |
=SOMME(INDEX(B2:D5;0;F2))Le mois 2 est Feb, et G2 additionne C2:C5 : 15,200. Mettez F2 à 3 pour mars. Une ligne entière fonctionne de la même façon : =SOMME(INDEX(B2:D5;3;0)) fait le total de East. Dans Excel 2021 et Microsoft 365, =INDEX(B2:D5;0;2) seule propage les quatre valeurs vers le bas. Pour choisir la colonne par son en-tête plutôt que par un numéro, remplacez F2 par un EQUIV : c'est le modèle INDEX et EQUIV.
INDEX sur une matrice ou un résultat propagé
INDEX lit aussi les matrices que renvoie une formule, pas seulement les plages de la feuille. Elle choisit ainsi un élément dans une liste triée, filtrée ou dédoublonnée sans écrire la liste au préalable.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Most expensive | Bread | |
| 2 | Apple | Fruit | $1.20 | Second | Pear | |
| 3 | Pear | Fruit | $1.50 | Cheapest | Carrot | |
| 4 | Carrot | Vegetable | $0.80 | |||
| 5 | Bread | Bakery | $2.40 | |||
| 6 | Milk | Dairy | $1.10 |
TRIERPAR (SORTBY en anglais) renvoie les cinq produits classés par prix, et INDEX prend l'élément 1 (Bread), l'élément 2 (Pear) ou, avec le tri croissant, l'élément 1 (Carrot). En français, la formule de E2 s'écrit =INDEX(TRIERPAR(A2:A6;C2:C6;-1);1). Passez le prix de Milk à 3 et il devient le plus cher. Si une liste propagée se trouve déjà sur la feuille, par exemple en H2, Excel 2021 et Microsoft 365 permettent d'écrire =INDEX(H2#;2) pour son deuxième élément.
Exercice : le total d'un mois choisi
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Region | Jan | Feb | Mar | Month number | Total | |
| 2 | North | 4,200 | 3,900 | 4,800 | 1 | ||
| 3 | South | 3,100 | 3,600 | 3,300 | |||
| 4 | East | 5,200 | 4,700 | 5,600 | |||
| 5 | West | 2,800 | 3,000 | 3,400 |
À vous : En G2, renvoyez le total du mois dont le numéro est en F2 (1 = Jan, 2 = Feb, 3 = Mar), avec INDEX.
Questions fréquentes
Que fait la fonction INDEX dans Excel ?
Elle renvoie la valeur située à une position donnée dans une plage : =INDEX(A2:C6;3;2) renvoie la valeur de la troisième ligne et de la deuxième colonne de A2:C6. Les positions se comptent depuis la cellule en haut à gauche de la plage, pas depuis la ligne 1 de la feuille.
Comment obtenir la dernière valeur d'une colonne avec INDEX ?
Utilisez le nombre de cellules remplies comme numéro de ligne : =INDEX(B2:B100;NBVAL(B2:B100)) renvoie la dernière valeur d'une colonne sans trous. Avec des trous, =LOOKUP(2,1/(B2:B100<>""),B2:B100) (forme anglaise) renvoie la dernière valeur non vide.
Pourquoi INDEX renvoie-t-elle #REF! ?
Le numéro de ligne ou de colonne dépasse la plage. =INDEX(A2:A6;7) demande le septième élément d'une plage de cinq cellules et renvoie #REF!.
Comment renvoyer une colonne entière avec INDEX ?
Utilisez 0 comme numéro de ligne : =INDEX(B2:D5;0;2) renvoie toute la deuxième colonne. Entourez-la d'une fonction pour en faire le total, comme =SOMME(INDEX(B2:D5;0;2)), ou laissez-la se propager dans Excel 2021 et Microsoft 365.