J'essaie d'écrire un code VBA qui recherchera une lettre dans une chaîne et la remplacera par une valeur de cellule spécifique.
problème est que la lettre peut apparaître dans la chaîne un maximum de 3 fois et chaque fois que la la lettre doit être remplacée par une valeur différente. p>
Exemple string Le premier x doit être remplacé par 1, seconde avec 2 et troisième avec 3. P> mon code jusqu'à présent p> Le problème avec le code ci-dessus est que cela remplacera chaque Idéalement, le deuxième et troisième remplacement proviendrait d'une valeur cellulaire différente de mon choix. P> P> J'ai x et x et x code> p> x code > avec la même valeur; Je voudrais le faire avec un ordre de remplacement spécifique. P>
3 Réponses :
Essayez la fonction Split:
Sub XTest()
Dim s As String
s = "I have x and x and x"
Dim parts As Variant
parts = Split(s, "x")
Dim i As Long
For i = 0 To UBound(parts) - 1
parts(i) = parts(i) & i + 1
Next i
s = Join(parts, "")
Debug.Print s
End Sub
Mettez vos remplacements dans l'ordre dans une matrice, puis pour chaque cellule remplacez le 1st "x" avec la valeur de la 1ère graphique, le 2e avec la 2e valeur de la matrice, etc.
Dim newString As String, i As Long, j As Long, replacements As Variant
For i = 0 To lim
replacements = Array(1, 2, "some other value or cell", "4th replacement")
newString = Range("B" & i + 13).value
For j = 0 To UBound(replacements)
If InStr(newString, "x") = 0 Then Exit For
newString = Replace$(newString, "x", replacements(j), 1, 1)
Next
Range("B" & i + 13).value = newString
Next
Vous pouvez utiliser afin que vous puissiez le envelopper dans une fonction
: p> à utiliser comme: p> remplacer () code> Fonction:
Belle solution hth.
Votre approche d'utilisation d'une boucle DO est simple, propre et élégante.
Quelle (s) forme (s) "x" prend-elle la réalité?
x sera remplacé par des valeurs numériques.
Pouvez-vous poster des instantanés de quelques exemples sur la feuille de calcul elle-même?