61 votes

Comment séparer une chaîne de caractères basée sur " :" dans MS-Excel ?

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

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

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

87voto

nutsch Points 1963

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

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

en C1

=mid(a1,find(":",a1)+1,len(a1))

65voto

BrOSs Points 855

Allez dans l'onglet Données, puis dans l'option Texte en colonnes. Ensuite, choisissez l'option "Délimité", puis sélectionnez "autre" et mettez le délimiteur que vous voulez.

26voto

Jamie Bull Points 503

Si vous pouvez utiliser VBA, vous pouvez alors utiliser la fonction Split() fonction. Voici une fonction définie par l'utilisateur (UDF) que vous pouvez utiliser dans une cellule. Elle se divise sur le caractère de votre choix et renvoie le résultat suivant n e élément de la liste fractionnée.

Véase Comment ajouter VBA dans MS Office ? pour des informations sur la façon de définir un 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

9voto

Collez-le à B1 et remplissez-le de colonnes à droite et de rangées vers le 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ù ',' était remplacé par ';'. Cela ne fonctionne pas dans la version américaine d'Excel :

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

0voto

Andy Robertson Points 91

Vous pouvez également utiliser une formule de tableau pour ce faire.

Si vous avez ABC:DEF:GHI dans la cellule A1, si vous entrez la formule suivante dans B1:D1, le texte de A1 sera séparé par le caractère deux-points.

\=IFERROR(MID(":"&$A1&":",SMALL(IF(MID(":"&$A1&":",ROW($1:$999),1)=":",ROW($1:$999),""),COLUMN()-1)+1,SMALL(IF(MID(":"&$A1&": ",ROW($1:$999),1)=":",ROW($1:$999),""),(COLUMN()))-SMALL(IF(MID(":"&$A1&":",ROW($1:$999),1)=":",ROW($1:$999),""),COLUMN()-1)-1),"")

Vous devez appuyer sur CTRL+ENTER pour entrer la formule. La partie principale qui est répétée 3 fois est la suivante... IF(MID(":"&$A1&":",ROW($1:$999),1)=":",ROW($1:$999),"") qui obtient un tableau des positions des deux-points (en utilisant les rangées 1 à 999 bien que vous puissiez en utiliser plus). Cela renvoie le tableau

1;"";"";"";5;"";"";"";9;"";"";"";13;"";"";""

En utilisant la fonction SMALL, vous obtenez la première et la deuxième plus petite valeur, ce qui vous donne 1 et 5. Ensuite, on utilise la fonction MID pour obtenir la chaîne de caractères entre le premier et le cinquième caractère (en gardant à l'esprit que la chaîne est ":ABC:DEF:FHI :" car nous avons ajouté le séparateur au début et à la fin). Ensuite, dans la colonne suivante, vous obtenez le texte entre les 5e et 9e caractères, etc.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X