Articles

Excel : Caractères génériques dans VLOOKUP et SUMIFS

Lors d’un récent séminaire Power Excel pour une section IMA®, une participante a demandé s’il existait un moyen d’utiliser VLOOKUP pour faire correspondre un nombre intégré dans une cellule plus longue. Elle essayait de faire correspondre des chèques d’un registre de chèques avec une liste de transactions compensées de sa banque. La difficulté : Le numéro de chèque était intégré à l’intérieur d’un champ de code de transaction.

Le champ qu’elle devait rechercher contenait un nombre variable de caractères comme préfixe, suivi du numéro de chèque, puis se terminant par encore plus de caractères. La plupart des gens ne réalisent pas que VLOOKUP prend en charge les caractères génériques. En fait, l’équipe Excel de Microsoft pense que les caractères génériques se retrouvent plus souvent dans les VLOOKUP par accident que par des personnes qui les utilisent intentionnellement. Puisque la plupart des gens ne savent pas que VLOOKUP supportera les jokers, il semble plus probable que les gens effectuent un VLOOKUP où leur valeur de recherche se trouve contenir un caractère qui n’était pas destiné à représenter un joker.

UTILISER LES Jokers

Les jokers standard sont un astérisque (*) pour signifier un nombre quelconque de caractères, et un point d’interrogation ( ?) pour signifier un seul caractère. Que faire si vous devez réellement rechercher un astérisque ou un point d’interrogation ? Utilisez ~* pour rechercher un astérisque ou ~ ? pour rechercher un point d’interrogation. Utilisez ~~ pour rechercher un tilde.

L’utilisation de ces trois caractères est particulièrement difficile si vous avez des centaines de VLOOKUP et que les valeurs contiennent déjà des caractères génériques. Essayer de convertir les valeurs à la volée en utilisant des fonctions SUBSTITUTE imbriquées devient lourd. Imaginez =VLOOKUP(SUBSTITUTE(SUBSTITUTE(A2, « ~ », « ~~ »), « * », « ~* »),  » ? », « ~ ? »). Il serait en fait préférable que Microsoft propose une option qui désactive le comportement des caractères génériques pour une feuille de calcul ou un classeur particulier.

Retour au problème initial. Vous devriez rechercher *pomme* pour trouver le mot « pomme » à l’intérieur de n’importe quel texte dans la première colonne de la table de recherche. Mais comme la cellule A2 de la figure 1 contient déjà « pomme », la formule commence par =VLOOKUP(« * »&A2& »* ». Dans ce cas, vous utilisez le caractère de concaténation (&) pour envelopper la valeur dans A2 avec un astérisque de chaque côté. Vous pourriez également utiliser =VLOOKUP(CONCATENATE( « * »,A2, « * ») pour envelopper le mot « pomme » dans des astérisques.

La formule =VLOOKUP(« * »&A2& »* »,$D$2:$E$6,2,FALSE) trouve correctement les 956 $ de la cellule E5.

Faites très attention en examinant les résultats de la recherche par caractères génériques. Que se passe-t-il si vous recherchez à la fois « apple » et « crabapple » ? La recherche de crabapple serait correcte, mais comme le VLOOKUP renvoie la première correspondance dans la table de recherche, le VLOOKUP pour *apple* renverrait la valeur de crabapple s’il est trouvé avant apple dans la table de recherche.

Trouver et additionner toutes les correspondances

Alors que je travaillais sur l’exemple lors du séminaire Excel, quelqu’un d’autre a posé une question sur la situation où il pourrait y avoir plusieurs correspondances et où vous voudriez trouver et additionner tous les résultats correspondants.

Puisque le caractère générique *apple* a si bien fonctionné avec VLOOKUP, j’ai créé un ensemble de données où nous pourrions tester pour voir si SUMIFS permettrait également les caractères génériques. Dans la fonction SUMIFS présentée ci-dessous, la formule dit d’additionner les valeurs de la colonne E si la valeur correspondante de la colonne D contient *pomme*. Cette formule fonctionne aussi bien.

IMPROVING WILDCARD HANDLING

Seriez-vous surpris d’apprendre que VLOOKUP peut gérer les caractères génériques ? Avez-vous déjà fait un VLOOKUP où la valeur de consultation pourrait contenir un astérisque ou un point d’interrogation dans le cadre d’un texte normal et non destiné à être utilisé comme un joker ?

Si la réponse à l’une de ces questions est oui, alors il serait probablement logique pour vous que Microsoft propose une nouvelle version améliorée de VLOOKUP qui ignore les jokers par défaut. Il pourrait y avoir un argument facultatif supplémentaire à la fin de cette nouvelle fonction qui vous permettrait d’indiquer à Excel d’utiliser les caractères génériques. Si vous n’utilisez pas cet argument, Excel n’utilisera pas de caractères génériques. Vous pourriez facilement rechercher « 142*154 » ou « Pourquoi ? » ou « e*Trade » sans avoir à vous soucier d’une valeur comme « Commerce électrique » apparaissant comme une fausse correspondance.

Des VLOOKUPS plus rapides arrivent

Microsoft teste depuis plusieurs mois une nouvelle version plus rapide de VLOOKUP dans le canal Insider Monthly des builds d’Office 365. La fonction est souvent 10 fois plus rapide que l’ancien VLOOKUP, en particulier lorsqu’il y a des milliers de consultations contre la même table.

La nouvelle logique devrait être déployée à tous les abonnés d’Office 365 d’ici la fin de 2019. Si vos VLOOKUP prennent actuellement moins d’une seconde, vous ne remarquerez peut-être pas le changement. Mais si vous avez une feuille de calcul massive qui prend 40 secondes à calculer, attendez-vous à voir ce temps de recalcul chuter à environ quatre secondes ou moins.