Note: The other languages of the website are Google-translated. Back to English
Se connecter  \/ 
x
or
x
S'inscrire  \/ 
x

or

Comment extraire le premier / dernier / nième mot d'une chaîne de texte dans Excel?

Avez-vous déjà souffert du problème dont vous avez besoin pour extraire un certain mot de la chaîne de texte dans une feuille de calcul? Par exemple, vous avez la gamme suivante de chaînes de texte nécessaires pour en obtenir le premier / dernier ou le nième mot, ici je peux parler de quelques moyens efficaces pour le résoudre.


Extraire le premier mot ou le nom de la chaîne de texte avec des formules

Si vous devez extraire le premier mot d'une liste de chaînes de texte, les formules suivantes peuvent vous aider.

Pour extraire le premier mot, entrez la formule ci-dessous dans une cellule vide, puis faites glisser la poignée de remplissage automatique de cette cellule vers la plage selon vos besoins.

= SI (ISERR (FIND ("", A2)), "", GAUCHE (A2, FIND ("", A2) -1))

Pour extraire le dernier mot de chaque cellule, veuillez appliquer cette formule:

= SI (ISERR (TROUVER ("", A2)), "", DROITE (A2, LEN (A2) -FIND ("*", SUBSTITUTE (A2, "", "*", LEN (A2) -LEN ( SUBSTITUT (A2, "", ""))))))

Et maintenant, vous verrez que le premier ou le dernier mot est extrait de chaque cellule.

Notes: Dans les formules ci-dessus, A2 indique la cellule dont vous extrairez le premier ou le dernier mot.

Difficile de mémoriser de longues formules compliquées? Un outil incroyable vous aide à extraire le nième mot wen quelques clics seulement!

Les longues formules ci-dessus ne peuvent extraire que le premier et le dernier mot, mais seront inutiles pour extraire le nième mot spécifié, dit le deuxième mot, le sixième mot, etc. Même si vous pouvez trouver des formules pour résoudre le problème, les formules doivent être trop complexe pour être mémorisé et appliqué. Ici, la fonctionnalité Extraire le nième mot dans la cellule de Kutools for Excel est recommandée, et elle vous aidera à extraire le nième mot aussi facilement que possible! Essai gratuit complet de 30 jours!

Kutools pour Excel - Comprend plus de 300 outils pratiques pour Excel. Essai gratuit complet de 30 jours, aucune carte de crédit requise! Achetez-le Maintenant

Extraire le nième mot de la chaîne de texte avec la fonction définie par l'utilisateur

Si vous souhaitez extraire le deuxième, le troisième ou n'importe quel nième mot de la chaîne de texte, vous pouvez créer une fonction définie par l'utilisateur pour le gérer.

1. Maintenez le ALT + F11 clés pour ouvrir le Fenêtre Microsoft Visual Basic pour Applications.

2. Cliquez insérer > Moduleet collez le code suivant dans le Module fenêtre.

Function FindWord(Source As String, Position As Integer)
'Update 20131202
Dim arr() As String
arr = VBA.Split(Source, " ")
xCount = UBound(arr)
If xCount < 1 Or (Position - 1) > xCount Or Position < 0 Then
    FindWord = ""
Else
    FindWord = arr(Position - 1)
End If
End Function

3. Ensuite, enregistrez le code, dans cet exemple, j'obtiendrai le troisième mot de la chaîne, alors tapez cette formule = mot de recherche (A2,3) dans une cellule B2 vide, puis faites glisser la poignée de remplissage automatique de cette cellule vers la plage selon vos besoins. Voir la capture d'écran:

A Noter: Dans la formule ci-dessus, A2 est la cellule d'où vous voulez extraire le mot, le nombre 3 indique le troisième mot de la chaîne que vous allez extraire et vous pouvez les modifier selon vos besoins.


Extraire chaque mot de la chaîne de texte et les lister horizontalement ou verticalement

Cette méthode présentera Kutools for Excel's Cellules divisés utilitaire pour extraire chaque mot des cellules de chaîne de texte, puis lister les mots extraits horizontalement ou verticalement en fonction de vos besoins.

Kutools pour Excel - Comprend plus de 300 outils pratiques pour Excel. Essai gratuit complet de 30 jours, aucune carte de crédit requise! Essai gratuit maintenant!

1. Sélectionnez les cellules de chaîne de texte dont vous extrairez leurs mots, puis cliquez sur le bouton Kutools > Fusionner et fractionner > Cellules divisés.

2. Dans la boîte de dialogue d'ouverture des cellules divisées, spécifiez le type de division dans le Type section, vérifiez la Space option dans la Spécifiez un séparateur section, et cliquez sur Ok bouton. Voir la capture d'écran:

3. Spécifiez maintenant la plage de destination dans laquelle vous allez générer les mots extraits, puis cliquez sur le bouton OK bouton

Si vous avez coché le Fractionner en colonnes dans la boîte de dialogue Diviser les cellules ci-dessus, chaque mot est extrait de chaque chaîne de texte et répertorié verticalement.

Si vous avez coché le Fractionner en lignes dans la boîte de dialogue Diviser les cellules ci-dessus, chaque mot est extrait de chaque chaîne de texte et répertorié horizontalement.


Extrayez le nième mot de la chaîne de texte dans Excel avec un outil incroyable

Si vous avez installé Kutools for Excel, vous pouvez utiliser sa fonction Formula Helper> Extraire le nième mot dans la cellule pour extraire rapidement le nième mot de la cellule spécifiée facilement.

Kutools pour Excel - Comprend plus de 300 outils pratiques pour Excel. Essai gratuit complet de 30 jours, aucune carte de crédit requise! Essai gratuit maintenant!

1. Sélectionnez la cellule dans laquelle vous placerez le mot extrait et cliquez sur Kutools > Aide à la formule > Aide à la formule pour activer cette fonctionnalité.

2. Dans la boîte de dialogue Formulas Helper, procédez comme suit:
(1) Sélectionnez Texte du Type de formule la liste déroulante;
(2) Cliquez pour mettre en évidence Extraire le nième mot de la cellule et Choisissez une formule zone de liste;
(3) Dans le Cellule , spécifiez la cellule à partir de laquelle vous extrairez le mot;
(4) Dans Le Nième boîte, spécifiez le nombre.

3. Clique le Ok bouton. Si nécessaire, faites glisser la poignée de saisie automatique de la cellule de formule et copiez la formule dans d'autres cellules.


Démo: extraire chaque mot de la chaîne de texte et les lister horizontalement ou verticalement


Kutools pour Excel comprend plus de 300 outils pratiques pour Excel, gratuits à essayer sans limitation en 30 jours. Téléchargez et essayez gratuitement maintenant!

Articles Liés:


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtrée...
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammes...
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellules...
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDF...
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    ELin · 1 years ago
    I've created the FindWord custom function as described and it worked perfectly but it stopped working the next day. I looked in the VBA window and the Module is still there. Any idea why the function is not working anymore?
  • To post as a guest, your comment is unpublished.
    shashikuamr · 1 years ago
    Dark Chocolate 25gm box 12 pcs
    Dark Chocolate 20gm*24 box
    White Chocolate 15gm
    White Chocolate 25gm*24
    Biscuits W/Marshmallow300gm
    Chocolate 40gm
    Can some plz help to extract the numbers before "gm", for example : 25,20,15,25,300,40
  • To post as a guest, your comment is unpublished.
    Maura · 1 years ago
    Hi I would like to know how to use the VBA model but I have sentences of only one word, and i would like to pick the first word even if there is only one word.

    Thank you
    • To post as a guest, your comment is unpublished.
      kellytte · 1 years ago
      Hi Maura,
      The VBA cannot extract the first word if there is only word in the cell. However, it’s recommended to apply the Text to Column to extract the first word of every cell in a column quickly.
      1. Select the column, copy, and paste in a blank column.
      2. Keep the new column selected, click Data > Text to Column.
      3. In the Text column dialog, select Delimited, and then check Space as delimiters, and finally click Finish.
      4. Now all words are separated by space. For the extracted words, you can remove all columns except the first one.
  • To post as a guest, your comment is unpublished.
    murali · 4 years ago
    i want to remove the last word in cell and data is like this "/Document/CstmrCdtTrfInitn/PmtInf/CdtTrfTxInf/Cdtr/CtctDtls/FaxNb" can i have formula
  • To post as a guest, your comment is unpublished.
    John · 4 years ago
    Thanks so much for these! I have a question, though: how do I extract a number or group of numbers from a cell or textbox? For instance, if I have [37.5" x 21'] in cell A1, how could extract 37.5 into A2? There could be any number of characters and numbers in A1, but I'll always want the first number to the left of the "X", and the first number to the right. Not sure if you've covered something like this elsewhere, so I thought I'd ask here.
    (Not sure if this went through the first time, so here it is again.)
  • To post as a guest, your comment is unpublished.
    Antonio · 4 years ago
    Thank you! It works fine called in a Sub.
  • To post as a guest, your comment is unpublished.
    DC2209 · 5 years ago
    the original formula isn't working for me, I keep getting #NAME?, anyone able to help? I am using Excel 2013 and this VBA would save me sooooo much time
  • To post as a guest, your comment is unpublished.
    DC2209 · 5 years ago
    The original VBA code posted here would save me so much time, however whenever I type in the =findword formula, I then get #NAME?, anyone able to help me? I am using Excel 2013
  • To post as a guest, your comment is unpublished.
    Shiva · 5 years ago
    Hi,

    I am having cell with values like SAN_UN_TC1,SAN_UN_TC2,PEP_HR_TC1
    I would like to extract first words liek SAN /PEP into one cell and words liek UN/HR to another cell
    How could i do it, Any help is appreciated.

    Thanks,
    Shiva
    • To post as a guest, your comment is unpublished.
      Allart · 5 years ago
      If number of characters in string (SAN_UN_TC1) is fixed (3_2_3), it's simple:
      column 1: =LEFT(B15,3)
      column 2: =MID(B15,5,2)
      column 3: =RIGHT(B15,3)
  • To post as a guest, your comment is unpublished.
    Dean · 5 years ago
    Many thanks for sharing VBA code....saved me a lot of time
  • To post as a guest, your comment is unpublished.
    Dean · 5 years ago
    VBA is so useful - thanks for sharing!
  • To post as a guest, your comment is unpublished.
    Ron Hollingsworth · 5 years ago
    I would like to extract the first word on A1 and put it in front of a word in B1. what's the formula to do that? Thanks!
  • To post as a guest, your comment is unpublished.
    Lorie · 5 years ago
    I'm looking for a formula that will pull out the First and Last Name in a text string. I've tried the formula here, which is amazing by the way, and it works great until it comes across a surname that is not hyphenated. Here is a sample of the text strings I'm presented with:
    example 1: Mouse, Mickey Justin M Feb 10
    example 2: Hall Mouse, Minnie Jean F Mar 18

    For string example 1, the formula/function here works great. For example 2 I get "Hall, Mouse".

    Here is the Excel formula I'm running:
    =CONCATENATE(LEFT(A2,FIND(", ",A2)+1), 'Personal Macro Workbook'!FindWord(A2,2))

    Is there a way to modify the user defined function so that it looks for the first word to the right of the ","?
    • To post as a guest, your comment is unpublished.
      Allart · 5 years ago
      Remove the last name from the string you feed to the FindWord function:
      - find the comma position
      - subtract this from the total length of the string
      - use the remaining 'RIGHT' side of the original string

      =CONCATENATE(LEFT(A2,FIND(", ",A2)+1),FindWord(RIGHT(A2,LEN(A2)-FIND(", ",A2)-1),1))
  • To post as a guest, your comment is unpublished.
    Dan · 5 years ago
    First word. Copy/paste the column, select the contents of the new column, replace " *" with "".
    Last word. Copy/paste the column, select the contents of the new column, replace "* " with ""
  • To post as a guest, your comment is unpublished.
    Vishal · 6 years ago
    ITS WORKING that's good.
    really helpful for us.
  • To post as a guest, your comment is unpublished.
    Mark Bolton · 6 years ago
    I have 64bit Excel 2013 and am missing the Morefunc addin. Based on the code above, I have come up with this replacement for Morefunc's WMID function. I would be grateful if anyone more expert than me could perform any tidying of it.

    Function WMid1(Source As String, Optional Position As Integer, Optional WordCount As Integer, Optional Separator As String)
    Dim arr() As String
    Dim xCount As Integer
    Dim wCount As Integer
    Dim wFirst As Integer
    Dim wLast As Integer
    If Position = 0 Then Position = 1
    If WordCount = 0 Then WordCount = 1
    If Separator = "" Then Separator = " "
    arr = VBA.Split(Trim(Source), Separator)
    xCount = UBound(arr) + 1
    If Position < 1 Then
    wFirst = Application.Max(xCount + Position - WordCount + 1, 0)
    wLast = xCount + Position
    Else
    wFirst = Position - 1
    wLast = Application.Min(xCount - 1, Position + WordCount - 2)
    End If
    If xCount < 2 Or Abs(Position) > xCount Then
    WMid1 = ""
    Else
    WMid1 = arr(wFirst)
    For wCount = wFirst + 1 To wLast
    WMid1 = WMid1 & Separator & arr(wCount)
    Next
    End If
    WMid1 = Trim(WMid1)
    End Function
  • To post as a guest, your comment is unpublished.
    Thang Nguyen · 6 years ago
    Hi geeks,

    I have a cell like this: 1 ABCD; 2 DEDF; 1 DED#3d; 4 FDWDS; 1 ED

    And I would like to extract character after 1. So desired to have a result as below: ABCD;DED#3d;ED
  • To post as a guest, your comment is unpublished.
    Allart · 6 years ago
    Try this (see my reply above):

    Function FindWord(Source As String, Position As Integer)
    ' gets 1st, 2nd, last(0), second to last(-2) etc, word from a string
    ' Update 20150505
    Dim arr() As String
    arr = VBA.Split(WorksheetFunction.Trim(Source), " ")
    xCount = UBound(arr)
    Select Case Position
    Case -xCount To 0
    FindWord = arr(Position + xCount)
    Case 1 To xCount + 1
    FindWord = arr(Position - 1)
    Case Else
    FindWord = ""
    End Select
  • To post as a guest, your comment is unpublished.
    cheezfri · 6 years ago
    I can't get the code for the first word to work if some of my list has only one word in the cell. e.g.
    first word ---> first
    second ---> [null]
    last word ---> last
  • To post as a guest, your comment is unpublished.
    Angelia · 6 years ago
    Hi..
    Thanks for your code, i have list sentences, and one of them just 1 word, and your code not work if its just only have 1 word..
  • To post as a guest, your comment is unpublished.
    Nico · 6 years ago
    Thank You soooo MUCH!!
  • To post as a guest, your comment is unpublished.
    Badan · 6 years ago
    Thanks, Alan, this is great, thanks! :)
  • To post as a guest, your comment is unpublished.
    Allart · 6 years ago
    Hi, just an addition to the code yesterday. This adds an extra line to adjust for redundant spaces in the source string:

    arr = VBA.Split(WorksheetFunction.Trim(Source), " ")

    regards,
    Allart
  • To post as a guest, your comment is unpublished.
    Allart · 6 years ago
    Hi,

    Thanks for your piece of code. It inspired me to expand a little. With the next lines, you can select: last word (0), one but last (-1), second to last (-2) etc. Regardless of number of words.

    Function FindWord(Source As String, Position As Integer)
    'Update 20150504
    Dim arr() As String
    arr = VBA.Split(Source, " ")
    xCount = UBound(arr)
    Select Case Position
    Case -xCount To 0
    FindWord = arr(xCount + Position)
    Case 1 To (xCount + 1)
    FindWord = arr(Position - 1)
    Case Else
    FindWord = ""
    End Select
    End Function
  • To post as a guest, your comment is unpublished.
    Mohammad · 6 years ago
    Much appreciated. It helped me a lot.
  • To post as a guest, your comment is unpublished.
    yücel · 6 years ago
    how can we change fonts for nth word in a cell
  • To post as a guest, your comment is unpublished.
    MikeSyr · 6 years ago
    This does not work properly on a source string made up of non-words (like vendor names followed by part numbers)
  • To post as a guest, your comment is unpublished.
    Badan12 · 6 years ago
    Hi,

    This really saves a lot of time. Thanks for sharing Can someone also suggest how we can extract the words with vba in a reverse way, e.g last word is 1, the second from right to left is 2 and so on. This will be much appreciated.
  • To post as a guest, your comment is unpublished.
    Balu · 7 years ago
    Good one. This worked very well
  • To post as a guest, your comment is unpublished.
    Balu · 7 years ago
    Hi,

    This is excellent. It worked very well and reduces our strain saves lots of time in this operation.

    Thanks to all who worked on this and shared...
  • To post as a guest, your comment is unpublished.
    baynes@ecg-inc.com · 7 years ago
    Hi, I was just wondering what else I could insert into the Visual Basic formula that could extract and commas or dashs immediatly after the data..

    for e.g. Fortin-
  • To post as a guest, your comment is unpublished.
    Chad · 7 years ago
    This was SUPER helpful, I was wondering if anyone knew of a downloadable, or a copy and pastable list of helpful hand made functions such as the "FindWord" that I would be able to use.
  • To post as a guest, your comment is unpublished.
    Alexandros · 7 years ago
    Thanks a lot! Worked fine! :-)
  • To post as a guest, your comment is unpublished.
    Jarad · 7 years ago
    This user-defined function is awesome! Thanks a ton for sharing it.
  • To post as a guest, your comment is unpublished.
    Edgar · 7 years ago
    That vba code is fantastic, thanks a lot.