Le dernier mot

Un problème simple, à première vue, avec une solution non évidente : extraire le dernier mot d'une ligne de texte. Eh bien, soit, dans le cas général, le dernier fragment, séparé par un caractère délimiteur donné (espace, virgule, etc.) En d'autres termes, il faut mettre en œuvre une recherche inversée (de la fin au début) dans la chaîne d'un caractère donné, puis extrayez tous les caractères à sa droite.

Examinons les différentes manières traditionnelles de choisir : formules, macros et via Power Query.

Méthode 1. Formules

Pour mieux comprendre l'essence et la mécanique de la formule, partons un peu de loin. Tout d'abord, augmentons le nombre d'espaces entre les mots dans notre texte source à, par exemple, 20 pièces. Vous pouvez le faire avec la fonction de remplacement. REMPLACER (REMPLAÇANT) et la fonction de répétition d'un caractère donné N fois - RÉPÉTER (REPT):

Le dernier mot

Maintenant, nous supprimons 20 caractères de la fin du texte résultant à l'aide de la fonction DROIT (DROITE):

Le dernier mot

Il fait plus chaud, non ? Il reste à supprimer les espaces supplémentaires à l'aide de la fonction TRIM (GARNITURE) et le problème sera résolu :

Le dernier mot

Dans la version anglaise, notre formule ressemblera à ceci :

=COUPER(DROITE(SUBSTITUER(A1;» «;REPT(» «;20));20))

J'espère qu'il est clair qu'en principe, il n'est pas nécessaire d'insérer exactement 20 espaces - n'importe quel nombre fera l'affaire, tant qu'il est supérieur à la longueur du mot le plus long du texte source.

Et si le texte source doit être divisé non pas par un espace, mais par un autre caractère séparateur (par exemple, par une virgule), alors notre formule devra être légèrement corrigée :

Le dernier mot

Méthode 2. Fonction macro

La tâche d'extraire le dernier mot ou fragment du texte peut également être résolue à l'aide de macros, à savoir écrire une fonction de recherche inversée dans Visual Basic qui fera ce dont nous avons besoin - rechercher une sous-chaîne donnée dans une chaîne dans la direction opposée - à partir de la fin au début.

Appuyez sur le raccourci clavier autre+F11 ou bouton Visual Basic languette promoteur (Développeur)pour ouvrir l'éditeur de macros. Ajoutez ensuite un nouveau module via le menu Insertion – Module et copiez-y le code suivant :

 Fonction LastWord(txt As String, Facultatif delim As String = " ", Facultatif n As Integer = 1) As String arFragments = Split(txt, delim) LastWord = arFragments(UBound(arFragments) - n + 1) End Function  

Vous pouvez maintenant enregistrer le classeur (dans un format prenant en charge les macros !) et utiliser la fonction créée dans la syntaxe suivante :

=DernierMot(txt ; delim ; n)

De

  • txt – cellule avec texte source
  • délimiter — caractère séparateur (par défaut — espace)
  • n – quel mot doit être extrait de la fin (par défaut – le premier de la fin)

Le dernier mot

Avec toute modification future du texte source, notre fonction macro sera recalculée à la volée, comme toute fonction de feuille Excel standard.

Méthode 3. Power Query

Requête d'alimentation est un module complémentaire gratuit de Microsoft permettant d'importer des données dans Excel à partir de presque toutes les sources, puis de transformer les données téléchargées en n'importe quelle forme. La puissance et la fraîcheur de ce complément sont si grandes que Microsoft a intégré toutes ses fonctionnalités dans Excel 2016 par défaut. Pour Excel 2010-2013, Power Query peut être téléchargé gratuitement à partir d'ici.

Notre tâche consistant à séparer le dernier mot ou fragment via un séparateur donné à l'aide de Power Query est résolue très facilement.

Tout d'abord, transformons notre table de données en une table intelligente à l'aide de raccourcis clavier. Ctrl+T ou des commandes Accueil – Format sous forme de tableau (Accueil — Format sous forme de tableau):

Le dernier mot

Ensuite, nous chargeons la "table intelligente" créée dans Power Query à l'aide de la commande De table/gamme (D'après tableau/gamme) languette Données (si vous avez Excel 2016) ou sur l'onglet Requête d'alimentation (si vous avez Excel 2010-2013) :

Le dernier mot

Dans la fenêtre de l'éditeur de requêtes qui s'ouvre, sous l'onglet De La Carrosserie (Transformer) choisir une équipe Fractionner la colonne - Par délimiteur (Scinder la colonne — Par délimiteur) puis il reste à définir le caractère de séparation et à sélectionner l'option Délimiteur le plus à droitepour ne pas couper tous les mots, mais seulement le dernier :

Le dernier mot

Après avoir cliqué sur OK le dernier mot sera séparé dans une nouvelle colonne. La première colonne inutile peut être supprimée en cliquant avec le bouton droit sur son en-tête et en sélectionnant Effacer (Effacer). Vous pouvez également renommer la colonne restante dans l'en-tête du tableau.

Les résultats peuvent être téléchargés sur la feuille à l'aide de la commande Accueil — Fermer et charger — Fermer et charger dans … (Accueil — Fermer et charger — Fermer et charger dans…):

Le dernier mot

Et comme résultat on obtient :

Le dernier mot

Comme ça – bon marché et joyeux, sans formules ni macros, presque sans toucher au clavier 🙂

Si la liste d'origine change dans le futur, il suffira de faire un clic droit ou d'utiliser un raccourci clavier Ctrl+autre+F5 mettre à jour notre demande.


  • Fractionner le texte collant en colonnes
  • Analyse et analyse de texte avec des expressions régulières
  • Extraire les premiers mots du texte avec la fonction SUBSTITUER

Soyez sympa! Laissez un commentaire