La fonction intégrée VLOOKUP est l'une des fonctions les plus puissantes de Excel. Mais il présente un inconvénient majeur : il ne trouve que la première occurrence de la valeur souhaitée dans le tableau et uniquement dans la colonne la plus à droite. Mais si vous avez besoin du 2ème, du 3ème et pas du dernier ?
Disons que nous avons un tableau de prêts traités comme celui-ci :
Nous avons besoin de savoir, par exemple, quel était le montant du troisième prêt accordé à Mike ou quand John a signé son deuxième accord. Fonction intégrée VLOOKUP sait rechercher uniquement la première occurrence d'un nom dans le tableau et ne nous aidera pas.
Écrivons notre fonction, qui recherchera non seulement la première, mais également toute (Nième) occurrence suivante. Appelons-le, par exemple, VLOOKUP2.
Ouvrir le menu Service - Macro - Editeur Visual Basic , insérez le nouveau module (menu Insert - Module ) et copiez-y le texte de cette fonction :
Function VLOOKUP2(Table As Range, _ SearchColumnNum As Integer, _ SearchValue As Variant, _ N As Integer, _ ResultColumnNum As Integer) 'moonexcel.com.ua Dim i As Integer Dim iCount As Integer For i = 1 To Table.Rows.Count If Table.Cells(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 End If If iCount = N Then VLOOKUP2 = Table.Cells(i, ResultColumnNum) Exit For End If Next i End Function
Fermer l'éditeur Visual Basic et revenez à Excel.
Maintenant en Assistants de fonctions dans la catégorie Défini par l'utilisateur vous pouvez trouver notre fonction VLOOKUP2 et l'utiliser. La syntaxe de la fonction est la suivante :
=VLOOKUP2( tableau ; column_number_where_we_search ; valeur_recherchée ; Numéro d'entrée ; column_number_from_which_we_take_the_value )
Autrement dit, afin de connaître le montant du troisième prêt accordé à Mike, vous devrez saisir :
=VLOOKUP2(A2:A19; 1; "Mike"; 3; 4)