Comment trouver une sous-chaîne en utilisant VBA (9 façons)

  • Partage Ça
Hugh West

Si vous recherchez les méthodes les plus simples pour trouver une sous-chaîne à l'aide de VBA, vous êtes au bon endroit. Après avoir lu cet article, vous serez en mesure de trouver la position d'une sous-chaîne, d'extraire des données à l'aide de cette sous-chaîne ou de modifier le format d'une sous-chaîne facilement. Entrons dans l'article.

Télécharger le cahier d'exercices

Exemple de contenu

9 façons de trouver une sous-chaîne en utilisant VBA

J'ai ici le tableau de données suivant, dans lequel je vais montrer comment trouver une sous-chaîne dans une chaîne de caractères à l'aide de VBA et comment trouver une sous-chaîne dans une chaîne de caractères aléatoire.

J'ai effectué cette tâche en utilisant Microsoft Excel 365 vous pouvez utiliser toute autre version selon votre convenance.

Méthode 1 : Recherche d'une sous-chaîne dans une chaîne à l'aide de VBA

Si vous voulez trouver la sous-chaîne désirée dans une chaîne de caractères en utilisant VBA, vous pouvez utiliser la fonction InStr dans le code VBA.

Step-01 :

➤Go to Développeur Tab>> ; Visual Basic Option

Ensuite, le Éditeur Visual Basic s'ouvrira.

➤Go to Insérer Tab>> ; Module Option

Après cela, un Module sera créé.

Step-02 :

➤Write the following code

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "I think therefore I am", "think") MsgBox Pos End Sub 

Ici, InStr(1, "Je pense donc je suis", "penser") retournera la position de la sous-chaîne d'une chaîne de caractères. 1 est la position de départ, " Je pense donc je suis" est la chaîne où vous trouverez la sous-chaîne souhaitée, et "penser" est la sous-chaîne que vous voulez trouver. Par défaut, il est sensible à la casse, donc faites attention à la casse de la sous-chaîne que vous voulez rechercher.

➤Press F5

Résultat :

Après cela, vous obtiendrez ce qui suit Boîte à messages contenant la position de la "penser" sous-chaîne.

Méthode 2 : Trouver une sous-chaîne sensible à la casse dans une chaîne de caractères

Si vous souhaitez trouver la sous-chaîne souhaitée dans une chaîne de caractères, quelle que soit la casse, en utilisant VBA, suivez cette méthode.

Step-01 :

➤Follow Step-01 de Méthode 1

 Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think",vbTextCompare) MsgBox Pos End Sub 

Ici, vbTextCompare est utilisé pour trouver une sous-chaîne insensible à la casse.

➤Press F5

Résultat :

Ensuite, vous obtiendrez ce qui suit Boîte à messages contenant la position de la "penser" sous-chaîne.

Vous pouvez faire de même en utilisant le code suivant.

 Option Compare Text Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think") MsgBox Pos End Sub 

Ici, Texte de comparaison d'options trouvera la sous-chaîne insensible à la casse.

➤Press F5

Résultat :

Ensuite, vous obtiendrez les éléments suivants Boîte à messages contenant la position de la "penser" sous-chaîne.

Méthode-3 : Utilisation de la fonction InstrRev en VBA

Ici, je vais montrer comment trouver une sous-chaîne à partir de la fin d'une chaîne.

Step-01 :

➤Follow Step-01 de Méthode 1

 Sub FindFromEnd() MsgBox InStrRev("Je pense donc je suis", "Je") End Sub 

InStrRev trouvera la sous-chaîne du côté droit au lieu du côté gauche.

➤Press F5

Résultat :

Ensuite, vous obtiendrez ce qui suit Boîte à messages contenant la position du deuxième "I" sous-chaîne du côté droit.

Méthode 4 : recherche de la position d'une sous-chaîne dans une chaîne de caractères d'une plage de données

Si vous voulez trouver le caractère spécial "@" dans le Id. de courriel alors suivez cette méthode. J'ai ajouté ici l'adresse de l'utilisateur. Colonne de position à cette fin.

Step-01 :

➤Follow Step-01 de Méthode 1

 Function FindSubstring(value As Range) As Integer Dim Pos As Integer Pos = InStr(1, value, "@") FindSubstring = Pos End Function 

Il créera une fonction nommée FindSubstring (vous pouvez utiliser n'importe quel autre nom)

valeur est la référence de la cellule qui contient la chaîne de caractères et est déclarée en tant que Gamme .

Step-02 :

➤Sélectionner la sortie Cellule E5

➤Typez la fonction suivante (créée par VBA )

=Trouver la sous-chaîne(D5)

D5 est la cellule qui contient la chaîne de caractères.

➤Press ENTER

➤Draguer le Poignée de remplissage Outil

Résultat :

Ensuite, vous obtiendrez les positions du caractère spécial " @" dans le Id. de courriel .

Lectures similaires :

  • Comment trouver une chaîne dans une cellule en utilisant VBA dans Excel (2 méthodes)
  • FindNext en utilisant VBA dans Excel (2 exemples)
  • Comment trouver une chaîne de caractères avec VBA dans Excel (8 exemples)
  • VBA Rechercher la dernière ligne dans Excel (5 façons)

Méthode 5 : Vérification d'une certaine sous-chaîne dans une chaîne de caractères dans une plage de données

Supposons que vous vouliez écrire Passez ou Ne pas correspondre aux noms des élèves en fonction de la Colonne de résultats Passez ou Échec a été écrite entre parenthèses. Pour trouver cette sous-chaîne dans le fichier Colonne de résultats et l'inscrire dans le Colonne de réussite ou d'échec suivre cette méthode.

Step-01 :

➤Follow Step-01 de Méthode 1

 Sub CheckSubstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.value, "Pass")> ; 0 Then cell.Offset(0, 1).value = "Passed" Else cell.Offset(0, 1).value = "Failed" End If Next cell End Sub 

Ici, la plage de cellules est C5:C10 qui est le Colonne de résultats

InStr(cell.value, "Pass")> ; 0 est la condition où le nombre est supérieur à zéro (lorsque la cellule contient "Pass" ), la ligne suivante continuera et donnera la sortie dans la cellule adjacente comme suit Adopté .

Si la condition devient fausse, cela signifie qu'une cellule ne contient pas d'informations. "Passe" puis la ligne sous Else s'exécutera et donnera la valeur de sortie dans la cellule adjacente en tant que Échoué .

Cette boucle se poursuivra pour chaque cellule.

➤Press F5

Résultat :

Ensuite, vous obtiendrez les résultats suivants dans la fenêtre de l'utilisateur. Réussir ou échouer colonne.

Méthode 6 : Vérification d'une certaine sous-chaîne dans une chaîne et extraction de données

Je vais montrer le chemin pour trouver les élèves nommés. Michael dans le Colonne Nom de l'élève et extraire leurs données correspondantes en utilisant VBA dans cette méthode.

Step-01 :

➤Follow Step-01 de Méthode 1

 Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & ; i), "Michael")> ; 0 Then icount = icount + 1 Range("E" & ; icount & ; ":G" & ; icount) = Range("B" & ; i & ; ":D" & ; i).value End If Next i End Sub 

Ici, j'ai utilisé B100 comme le Plage de la feuille active mais vous pouvez utiliser n'importe quelle gamme en fonction de votre utilisation.

InStr(1, Range("B" & ; i), "Michael")> ; 0 est la condition permettant de vérifier si la cellule de la colonne B contient Michael

Range("E" & ; icount & ; ":G" & ; icount) est la plage dans laquelle vous souhaitez obtenir vos données de sortie et Range("B" & ; i & ; ":D" & ; i).value donnera les valeurs des colonnes B à D .

➤Press F5

Résultat :

Après cela, vous obtiendrez les données extraites suivantes pour les étudiants ayant le nom Michael .

Méthode 7 : Recherche de la sous-chaîne d'un mot

Si vous voulez trouver la sous-chaîne en tant que mot, suivez cette méthode.

Step-01 :

➤Follow Step-01 de Méthode 1

 Sub Stringforword() Dim j As Integer j = InStr("Here is what I am", "is") If j = 0 Then MsgBox "Word not found" Else MsgBox "Word found in position : " & ; j End If End Sub 

Il vérifiera si la chaîne contient est et ensuite sa position sera donnée

➤Press F5

Résultat :

Ensuite, vous obtiendrez la boîte de message suivante qui montre le mot trouvé dans position:6 (la position de est ).

Vous pouvez tester ce code pour un mot qui n'est pas dans la chaîne.

➤Tapez le code suivant

 Sub Stringforword() Dim j As Integer j = InStr("Here is what I am", "are") If j = 0 Then MsgBox "Word not found" Else MsgBox "Word found in position : " & ; j End If End Sub 

➤Press F5

Résultat :

Ensuite, vous obtiendrez la boîte de message suivante qui montre le mot non trouvé .

Méthode 8 : Utilisation des fonctions Instr et LEFT

Ici, je vais expliquer la façon de trouver la position d'une sous-chaîne dans une chaîne de caractères et d'extraire les textes avant cette sous-chaîne en utilisant VBA et la fonction GAUCHE .

Step-01 :

➤Follow Step-01 de Méthode 1

 Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Here is what I am" j = InStr(txt, "is") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "is") est la position de la sous-chaîne est et Gauche(txt, j - 1) extraira les sous-chaînes avant est .

➤Press F5

Résultat :

Ensuite, vous obtiendrez la boîte de message suivante qui montre Ici (sous-chaîne avant est ).

Méthode-9 : mise en gras d'une certaine sous-chaîne dans une chaîne de caractères

Vous pouvez mettre en gras les notes avant les parenthèses dans le champ Colonne de résultats en suivant cette méthode.

Step-01 :

➤Follow Step-01 de Méthode 1

 Sub Boldingsubstring() Dim Cell As Range Dim txt As Integer For Each Cell In Selection txtCount = Len(Cell) txt = InStr(1, Cell, "(") Cell.Characters(1, txt - 1).Font.Bold = True Next Cell End Sub 

txt = InStr(1, Cell, "(") retournera la position de la première parenthèse et Cellule.Caractères(1, txt - 1).Font.Bold rendra la sous-chaîne avant la première parenthèse Gras .

Step-02 :

➤Sélectionnez le Colonne de résultats

➤Go to Développeur Tab>> ; Macros Option

Ensuite, un Macro apparaît.

➤Select Boldingsubstring (le nom de code VBA) et ensuite Exécuter .

Résultat :

Après cela, les notes dans le Résultat Colonne seront en gras.

Section pratique

Pour vous entraîner vous-même, nous avons fourni un Pratique comme ci-dessous dans une feuille nommée Pratique S'il vous plaît, faites-le vous-même.

Conclusion

Dans cet article, j'ai essayé de couvrir les façons les plus simples de trouver une sous-chaîne à l'aide de la fonction VBA dans Excel de manière efficace. Nous espérons que vous trouverez cet outil utile. Si vous avez des suggestions ou des questions, n'hésitez pas à nous en faire part.

Hugh West est un formateur et analyste Excel très expérimenté avec plus de 10 ans d'expérience dans l'industrie. Il est titulaire d'un baccalauréat en comptabilité et finance et d'une maîtrise en administration des affaires. Hugh a une passion pour l'enseignement et a développé une approche pédagogique unique qui est facile à suivre et à comprendre. Sa connaissance approfondie d'Excel a aidé des milliers d'étudiants et de professionnels du monde entier à améliorer leurs compétences et à exceller dans leur carrière. Grâce à son blog, Hugh partage ses connaissances avec le monde, offrant des tutoriels Excel gratuits et une formation en ligne pour aider les particuliers et les entreprises à atteindre leur plein potentiel.