8
votes

Si la valeur de la cellule commence par un ensemble spécifique de chiffres, remplacez les données.

Mes valeurs de cellules sont des chaînes de nombres (toujours supérieures à 5 numéros dans une cellule, c'est-à-dire 67391853214, etc.)

Si une cellule démarre avec trois nombres spécifiques (c'est-à-dire 673 dans une valeur de cellule 67391853214), je veux les données Dans la cellule à remplacer par une valeur différente (si 673 sont les premiers numéros, remplacez la valeur globale de la cellule avec "790")

Je sais qu'il y a un moyen d'utiliser une partie de la cellule pour ne utiliser qu'une partie de la cellule valeur mais je ne suis pas à 100% sur la syntaxe. C'est le code actuel que j'ai, mais il cherche spécifiquement "### *", pas les valeurs commencées par "###". Toute aide est grandement appréciée! xxx

`


2 commentaires

Quelque chose comme s'il est laissé (c.value, 3) = "614" ...............


Bien posé question pour votre premier!


3 Réponses :


9
votes

Utilisez la fonction gauche () code>, comme indiqué ci-dessous:

lastRow = Range("A" & Rows.Count).End(xlUp).Row
colNum = WorksheetFunction.Match("Number", Range("A1:CC1"), 0)
For Each c In Range(Cells(2, colNum), Cells(lastRow, colNum))  
  If LEFT(c.Value,3) = "614" _
     Or LEFT(c.Value,3) = "626" _
     Or LEFT(c.Value,3) = "618" _
     Or LEFT(c.Value,3) = "609" _
     Or LEFT(c.Value,3) = "605" Then
    c.Value = "737"


2 commentaires

Parfait c'est précisément ce que je cherchais. Merci beaucoup pour votre aide!


@Erin Si cela résolvait votre problème, vous pouvez marquer sa réponse comme acceptée en cliquant sur le chèque (✔) sous les flèches, vous obtiendrez tous les deux une réputation (oui, vous aussi) et le SO Community apprécie;)



3
votes

Mieux vaut faire une plage remplacer plutôt que de boucle à travers chaque cellule pour la vitesse: xxx


0 commentaires

0
votes

Voici mon problème sur le problème:

Sub SO()
    Dim MyString As String
    MyString = "614,626,618,609,605"
    For X = 1 To Range("C" & Rows.Count).End(xlUp).Row
        If Replace(MyString, Left(Range("C" & X).Value, 3), "") <> MyString Then Range("C" & X).Value = "737"
    Next
End Sub


0 commentaires