Table des matières
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 contenu9 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 où 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.