le découpage d'une chaîne de texte en lignes séparées en VBA
J'ai 2 zones de texte dans un fichier excel (ou un fichier csv) comme ci-dessous:
1 zone de texte contient (#11111,#22222,#33333), encadré 2 contient (#55555)
#11111,#22222,#33333 #55555
Je veux que le texte entre , d'être sur 3 lignes différentes et de répéter le texte dans la 2e zone de texte de sorte qu'il ressemble à celui ci-dessous:
#11111 #55555
#22222 #55555
#33333 #55555
Je suis nouveau sur vba. Je lis à propos des fonctions de chaîne, mais je ne peux pas venir avec la logique sur la façon de le faire.
Toute aide serait appréciée.
Salut @tim williams - Merci pour les conseils. J'ai réussi à écrire un petit code qui accomplit la tâche, mais il écrase le texte, si j'ai tout dans la 2e rangée et à la 3e rangée.
Sub splitcells()
Dim txt As String
Dim txt2 As String
Dim i As Integer
Dim cell1 As Variant
txt = Range("a1", "A1").Value
cell1 = Split(txt, ",")
For i = 0 To UBound(cell1)
Cells(i + 1, 1).Value = cell1(i)
Next i
txt2 = Range("b1", "b1")
For i = 1 To UBound(cell1)
Cells(i + 1, 2).Value = txt2
Next i
End Sub
Des conseils sur la façon de pousser les données sur la ligne 2 vers le bas .....
Split(txtBoxValue,",")
vous donnera un tableau de valeurs à partir de la première zone de texte- Dallimore : Besoin de votre aide dans cette s'il vous plaît stackoverflow.com/q/24656309/3820745
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas comment faire pour vous donner un indice qui peut vous aider à ajuster votre macro, donc j'ai codé ce que je pense que vous êtes après.
Vous parler d'écraser les données dans la 2e ou à la 3e rangée, donc je suppose que vous avez plusieurs lignes contenant les données dans ce format. J'ai donc converti votre code dans une boucle qui fonctionne bas de la colonne jusqu'à ce qu'il trouve une ligne vide.
- Je éviter d'écraser les données ci-dessous de la ligne actuelle par l'insertion de lignes que nécessaire.
J'ai changé votre code dans les moyens que je crois que rend le code plus facile à maintenir. J'ai expliqué mes raisons pour
ces changements.
Je n'ai pas expliqué la nouvelle déclarations que j'ai utilisées. Il est généralement facile de regarder une déclaration une fois que vous savez qu'il existe mais ne poser des questions si quelque chose n'est pas clair.
J'espère que cette aide.
ColCrnt = .Cells(RowCrnt, .Columns.Count).End(xlToLeft).Column
Si la ligne est vide, ce jeux ColCrnt à 1. Si la ligne n'est pas vide, il définit ColCrnt le numéro de la dernière cellule avec une valeur. Suivez avecIf .Cells(RowCrnt, ColCrnt).Value <> "" Then ColCrnt = ColCrnt + 1
et ColCrnt permettra d'identifier la première cellule vide après tout utilisé des cellules. La première instruction est le VBA équivalent de placer le curseur dans la colonne la plus à droite d'une ligne et en cliquant sur Ctrl+Gauche. Essayez-la.