Comment obtenir le premier mot dans Microsoft Excel
Si vous rencontrez une situation dans laquelle vous n’avez besoin que du premier mot dans chaque ligne d’une cellule plutôt que de tous les caractères, vous devez lire cet article. Le tutoriel suivant vous aidera à récupérer uniquement le premier mot via le code VBA dans Excel.
Dans cet article, nous allons nous concentrer sur la façon de conserver le premier mot uniquement dans chaque ligne d’une cellule séparée par un point-virgule via des codes macro.
Question: Les données sur lesquelles je travaille comportent parfois plusieurs lignes dans chacune des cellules et je souhaite extraire uniquement le premier mot.
Vous pouvez trouver la question originale http://www.excelforum.com/excel-programming-vba-macros/1093228-keep-first-word-in-each-line-separate-by-semicolon-and-remove-everything-else .html [ici]
Voici un aperçu du texte d’entrée (avant la feuille)
===
Voici un instantané du texte d’entrée (après la feuille) dans la colonne A et nécessite une sortie dans la colonne B; voir ci-dessous un instantané:
===
===
Pour obtenir le code; nous devons suivre les étapes ci-dessous pour lancer l’éditeur VB Cliquez sur l’onglet Développeur Dans le groupe Code, sélectionnez Visual Basic
-
Copiez le code ci-dessous dans le module standard
Function FirstWordOnly(rng As Range) Dim Arr() As Variant Dim Count As Integer Dim i As Integer Count = Len(rng) - Len(Replace(rng, Chr(10), "")) If Count > 0 Then ReDim Arr(0 To Count) For i = 0 To Count If i = 0 Then Arr(i) = Left(rng, InStr(1, rng, " ") - 1) ElseIf j = 0 Then j = InStr(1, rng, Chr(10)) Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j) Else j = InStr(j + 1, rng, Chr(10)) Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j) End If Next FirstWordOnly = Join(Arr, "; ") Else If InStr(1, rng, " ") > 0 Then FirstWordOnly = Left(rng, InStr(1, rng, " ")) Else FirstWordOnly = rng End If End If End Function
===
Maintenant, le code VBA est prêt à être utilisé; nous utiliserons la fonction définie par l’utilisateur nouvellement créée, c’est-à-dire « FirstWordOnly » dans Before Sheet.
Pour obtenir la sortie en utilisant UDF dans la cellule B2, la formule sera = FirstWordOnly (A2)
Explication du code:
Dans le code ci-dessus, nous avons utilisé les fonctions COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA.
«Len (rng)»; cela vérifiera la longueur de la cellule à laquelle nous nous référons ‘Replace (rng, Chr (10), » « )’; Le code vérifie le Chr (10), c’est-à-dire le saut de ligne dans chaque ligne, puis le remplace par des guillemets doubles (rien)
«Count = Len (rng) – Len (Replace (rng, Chr (10), » « ))»; Count stockera la différence de longueur de chaque ligne après avoir remplacé le saut de ligne Si Count> 0; cela vérifiera si la longueur de Count est supérieure à zéro et si elle est trouvée égale à zéro, c’est-à-dire que la cellule est vide, la condition IF n’exécutera pas le code. Pour vérifier cela, vous pouvez utiliser = FirstWordOnly (A5) dans la cellule B5 et il renverra 0
Si la cellule n’est pas vide, la boucle For sera utilisée avec la condition IF et, avec la fonction LEFT, nous récupérerons le premier mot La fonction JOIN ajoutera un point-virgule à la fin s’il y a plusieurs lignes dans chaque cellule Conclusion: En utilisant UDF, nous pouvons tout supprimer dans chaque ligne de cellule sauf le premier mot via VBA. Cette fonction fonctionnera dans toutes les versions de l’ancienne à la nouvelle, à savoir Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013.
Si vous avez aimé nos blogs, partagez-les avec vos amis sur Facebook. Et vous pouvez aussi nous suivre sur Twitter et Facebook.
Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer, compléter ou innover notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]