Amélioration de la fonction VLOOKUP

Table des matières

Comment bien emballer un parachute ?

Bénéficier à. Édition 2, révisée.

Disons que nous avons le tableau de commandes suivant :

Amélioration de la fonction VLOOKUP

Nous devons savoir, par exemple, quel était le montant de la troisième commande d'Ivanov ou quand Petrov a exécuté sa deuxième transaction. La fonction intégrée VLOOKUP ne peut rechercher que la première occurrence du nom de famille dans le tableau et ne nous aidera pas. Des questions telles que "Qui était le responsable de la commande numéro 10256 ?" restera également sans réponse, tk. le VLOOKUP intégré n'est pas en mesure de renvoyer les valeurs des colonnes à gauche de celle de la recherche.

Ces deux problèmes sont résolus d'un seul coup - écrivons notre propre fonction qui recherchera non seulement la première, mais, dans le cas général, la Nième occurrence. De plus, il pourra rechercher et produire des résultats dans n'importe quelle colonne. Appelons-le, disons, VLOOKUP2. 

Ouvrez Visual Basic Editor en appuyant sur ALT+F11 ou en sélectionnant dans le menu Service – Macro – Éditeur Visual Basic (Outils — Macro — Éditeur Visual Basic), insérez un nouveau module (menu Insertion – Module) et copiez-y le texte de cette fonction :

Fonction VLOOKUP2(Table As Variant, SearchColumnNum As Long, SearchValue As Variant, _ N As Long, ResultColumnNum As Long) Dim i As Long, iCount As Long Select Case TypeName(Table) Case "Range" 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 Case "Variant()" For i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 If iCount = N Then VLOOKUP2 = Table(i, ResultColumnNum) Exit For End If Next i End Select End Function  

Fermez Visual Basic Editor et revenez à Excel.

Maintenant Insertion – Fonction (Insérer — Fonction) dans la catégorie Défini par l'utilisateur (Défini par l'utilisateur) vous pouvez trouver notre fonction VLOOKUP2 et l'utiliser. La syntaxe de la fonction est la suivante :

=VLOOKUP2(table; number_of_column_where_we search for; lookup_value; N; number_of_column_from_to_get_value)

Maintenant, les limitations de la fonction standard ne sont pas un obstacle pour nous :

Amélioration de la fonction VLOOKUP

PS Un merci spécial à The_Prist pour avoir amélioré la fonction afin qu'elle puisse rechercher dans des livres fermés.

  • Recherche et substitution de données d'une table à une autre à l'aide de la fonction VLOOKUP
  • "Recherche V gauche" en utilisant les fonctions INDEX et MATCH

 

Soyez sympa! Laissez un commentaire