Comment diviser une chaîne basée sur ":" dans MS-Excel?

58

Ma colonne Excel est remplie de mots comme celui-ci:

1.) ABC:DCF
2.) DCF:FED

Je souhaite diviser chaque mot en fonction de ":" et placer le résultat dans des colonnes adjacentes telles que "ABC: DCF" dans la cellule "A: 1" devienne "ABC" dans la cellule "B: 1" et "DCF" dans la cellule " C: 1 "et les valeurs correspondantes dans chaque colonne. Comment faire ça?

Andrea
la source

Réponses:

63

Allez dans l'onglet Données, puis dans l'option Texte en colonnes. Plus tard, choisissez l'option "Délimité" puis sélectionnez "autre" et mettez le délimiteur de votre choix.

BrOS
la source
80

Le texte en colonnes fonctionnera. Une autre option, si vous souhaitez conserver la valeur d'origine, consiste à utiliser des formules:
dans B1

=left(a1,find(":",a1)-1) 

en C1

=mid(a1,find(":",a1)+1,len(a1))
fou
la source
2
La valeur d'origine peut être conservée même avec l'autre solution (vous pouvez spécifier une colonne différente pour stocker les nouvelles valeurs), mais j'aime mieux cette solution car elle permet de toujours avoir des valeurs à jour (par exemple, si vous modifiez A1, B1 et C1 seront mis à jour, contrairement à l’option de texte en colonne.
psychowood
C'est une solution brillante
JSG
26

Si vous pouvez utiliser VBA, vous pouvez utiliser la Split()fonction. Voici une fonction définie par l'utilisateur (UDF) que vous pouvez utiliser dans une cellule. Il se divise sur votre choix de personnage et renvoie le n ième élément de la liste des divisions.

Voir Comment ajouter VBA dans MS Office? pour plus d'informations sur la définition d'un fichier UDF.

Function STR_SPLIT(str, sep, n) As String
    Dim V() As String
    V = Split(str, sep)
    STR_SPLIT = V(n - 1)
End Function

Donc, vous devez entrer:

=STR_SPLIT(A1, ":", 1) // for the first half
=STR_SPLIT(A1, ":", 2) // for the second half
Jamie Bull
la source
1
Très gentil, je ne savais pas qu'il était si facile de créer vos propres formules
cowls
1
C'est parfait pour diviser une URL en ses composants.
Underverse
7

Collez-le dans B1 et remplissez-le dans les colonnes de droite et les lignes du bas:

=TRIM(MID(SUBSTITUTE($A1,":",REPT(" ",999)),COLUMNS($A:A)*999-998,999))

Edit: J'ai précédemment posté une version localisée de la formule, où ',' a été remplacé par ';'. Cela ne fonctionne pas dans la version US d'Excel:

=TRIM(MID(SUBSTITUTE($A1;":";REPT(" ";999));COLUMNS($A:A)*999-998;999))

Hardi Uutma
la source
1
Bienvenue sur Super User. Pourriez-vous ajouter quelques phrases à votre réponse pour expliquer en quoi cela consiste et comment cela fonctionne? Cela renforcera sa valeur éducative. Merci.
fixer1234
Bien sûr. Cela fait la même chose que Text to Columns from Data, sauf qu'il ne le fait pas avec une formule. Vous pouvez remplacer le ":" par un délimiteur différent ou faire référence à un délimiteur de l'autre cellule.
Hardi Uutma
Excel indique que cette formule n'est pas valide lorsque vous la collez dans une cellule. S'il vous plaît vérifier et mettre à jour.
thilina R
Salut thilina r! Merci d'avoir averti. J'ai effectué l'ajustement pour la version américaine d'Excel. S'il vous plaît laissez-moi savoir si vous avez des problèmes avec cela maintenant ou si quelque chose n'est pas claire.
Hardi Uutma
Très agréable. La seule réponse possible à ce jour vous permet de traiter avec autant de délimiteurs que vous le souhaitez, sans créer votre propre fonction.
CWilson