supposons avoir la table Excel suivante P>
p>
J'essaie d'écrire une macro dans VBA qui scanne les cellules dans la colonne de routage et répandit les sous-chaînes dans les autres colonnes. Donc, cela devrait être le résultat final p>
p>
Potentiellement si l'algorithme trouve n Substrings dans la chaîne principale sous la colonne RTG, il doit remplir n colonnes avec les substrings. p>
Pouvez-vous m'aider? p>
Merci d'avance p>
4 Réponses :
comme indiqué sur ICI , vous pouvez utiliser Sélectionnez la cellule ou la colonne contenant le texte que vous souhaitez scinder. P>
Sélectionnez Données> Texte aux colonnes. P>
Dans l'assistant de convertir du texte en colonnes, sélectionnez Délimitée> Suivant. P>
Sélectionnez les délimiteurs pour vos données. Vous voudriez mettre un Sélectionnez Suivant. P>
Sélectionnez le format de données de colonne ou utilisez ce que Excel a choisi pour vous. P>
Sélectionnez la destination, à savoir où vous souhaitez que les données divisées soient.
apparaissent sur votre feuille de calcul. P>
Sélectionnez Terminer. P>
blockQuote> texte sur colonnes code>: p>
- code> dans "Autre" Zone. P>
Merci, puis-je enregistrer une macro pour cela et le faire pour une rangée?
@DavideTarsitano - oui vous pouvez. Vous pouvez également mettre en évidence toutes les lignes dont vous avez besoin pour courir et tout faire à la fois.
Nous pouvons analyser en utilisant le caractère fort> caractère: Le code va vous tromper s'il rencontre une cellule vide prématurément. Pour éviter cette utilisation: P> Sub dural()
Dim i As Long, N As Long
N = Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To N
v = Cells(i, 2).Value
If v <> "" Then
arr = Split(v, "-")
Cells(i, 3).Resize(1, UBound(arr) + 1) = arr
End If
Next i
End Sub
Merci, la macro fonctionne, mais quand il l'exécute, cela me donne une erreur sur la dernière ligne "cellules (I, 2) .Offset (0, 1) .Resize (1, Ubound (arr) + 1) = Arr" Dire "" Dire " Erreur définie par l'application ou définie par objet "
Merci, la macro fonctionne, mais quand il l'exécute, cela me donne une erreur sur la dernière ligne "cellules (I, 2) .Offset (0, 1) .Resize (1, Ubound (arr) + 1) = Arr" Dire "" Dire " Erreur définie par l'application ou définie par objet "
@DavideTarsitano Voir mon Edit # 1 B>
Voici un simple sous pour fonctionner sur la cellule active actuelle.
Sub splitCell() Dim cellSplit As Variant Dim nextColumn As Long nextColumn = 1 cellSplit = Split(ActiveCell.Value2, "-") For Each Item In cellSplit ActiveCell.Offset(0, nextColumn).Value2 = Item nextColumn = nextColumn + 1 Next End Sub
Aucune des autres solutions ne semble traiter correctement avec des traits d'union de pointe.
Ceci devrait traiter avec leading / Trailing / Double Thhens sur les cellules actuellement sélectionnées dans une colonne. La mise en garde est que les substrings individuelles ne doivent pas contenir d'espaces. P>
Il sera plus facile d'aider si vous Modifiez votre question pour nous montrer ce que vous avez essayé jusqu'à présent. Vous pouvez également expliquer pourquoi le texte aux colonnes ne fonctionnera pas pour vous?