2017-08-04 5 views
0

J'ai dans la colonne AJ un grand nombre de chaînes de texte (catégories séparées par; #) exemple est Cell AJ2 a (Comptabilité: et du texte; #Business: et certains texte) dans chaque rangée. Je veux supprimer chaîne spécifique des catégories et tout ce qu'il suit dans la colonne AJ qui commence par « Business » ou « : #Business.Comment tronquer une partie d'un mot avec un caractère générique en utilisant VBA

enter image description here

+0

recherche "vba excel regex" ... c'est le meilleur hit https://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and -loops # 22542835 – jsotola

Répondre

2

Essayez ce code

Sub test() 
    Dim vDB, vSplit, s As String 
    Dim n As Long, i As Long 
    vDB = Range("aj2", Range("aj" & Rows.Count).End(xlUp)) 
    n = UBound(vDB, 1) 
    For i = 1 To n 
     s = vDB(i, 1) 
     If InStr(s, "Business") Then 
      vSplit = Split(s, "Business") 
      s = Replace(s, "Business" & vSplit(UBound(vSplit)), "") 
      If Right(s, 1) = "#" Then 
       s = Left(s, Len(s) - 2) 
      End If 
      vDB(i, 1) = s 
     End If 
    Next i 
    Range("ak2").Resize(n) = vDB 
End Sub 
+0

Si je veux tout supprimer avant Business. – cookiemonster

+1

Dim vDB, vSplit, s As Chaîne Dim n As Long, je As Long vDB = Range ("aj2", Range ("aj" & Rows.Count) .End (xlUp)) n = UBound (vDB, 1) Pour i = 1 à n s = vDB (i, 1) Si InStr (s, "Business") Ensuite vsplit = Groupe (s, "affaires") VDB (i, 1) = "affaires" et vsplit (UBound (vsplit)) Else VDB (i, 1) = Vide Fin Si Suivant i Plage ("ak2"). Redimensionner (n) = vDB –

+0

J'ai ajouté d'autres données d'exemple pour tout supprimer avant les opérations. J'ai mis à jour le poste avec un exemple d'image. J'ai mis en surbrillance une rangée .. Il y a deux entreprises, donc quand je cours le code, dans le commentaire, pour supprimer tout avant les affaires, cela fonctionne parfaitement mais il montre seulement une entreprise pour la ligne en surbrillance. – cookiemonster