SPLIT divise un texte au niveau d'un séparateur et répartit les morceaux dans des cellules. Elle transforme « Ana, Ventes, Paris » dans une seule cellule en trois cellules, un nom complet en prénom et nom, ou une URL en ses différentes parties : c'est le premier réflexe pour nettoyer des données importées.
Syntaxe
=SPLIT(text, delimiter, [split_by_each], [remove_empty_text])
text: Le texte à diviser.delimiter: Le caractère ou la chaîne au niveau duquel diviser.split_by_each[Facultatif] :TRUE(par défaut) traite chaque caractère dedelimitercomme un séparateur distinct.FALSEtraitedelimiteren entier comme une seule unité.remove_empty_text[Facultatif] :TRUE(par défaut) supprime les morceaux vides.FALSEles conserve sous forme de cellules vides.
Le résultat se déverse vers la droite : les cellules à droite de la formule doivent donc être vides.
Exemples de base
=SPLIT("Ana,Ventes,Paris", ",")
Renvoie trois cellules : Ana, Ventes, Paris.
=SPLIT(A2, " ")
Divise au niveau des espaces : Jeanne Dupont devient Jeanne et Dupont.
Le piège de split_by_each
Avec la valeur par défaut split_by_each = TRUE, chaque caractère du séparateur divise le texte à lui seul. Cela surprend ceux qui utilisent un séparateur de plusieurs caractères :
=SPLIT("Ana, Ventes, Paris", ", ")
Comme la virgule et l'espace sont tous deux des séparateurs, cette formule renvoie Ana, Ventes, Paris (les morceaux vides sont supprimés), ce qui fonctionne ici par chance. Mais avec un texte qui contient des espaces à l'intérieur des éléments :
=SPLIT("Nouvelle Orléans, Los Angeles", ", ")
renvoie Nouvelle, Orléans, Los, Angeles : quatre morceaux, et non deux. Pour traiter ", " comme un seul séparateur, passez le troisième argument à FALSE :
=SPLIT("Nouvelle Orléans, Los Angeles", ", ", FALSE)
Renvoie Nouvelle Orléans et Los Angeles.
Morceaux vides
Par défaut, les morceaux vides sont supprimés : des séparateurs consécutifs se fondent donc en un seul. Pour "a,,c" :
=SPLIT("a,,c", ",")
renvoie a, c. Pour conserver le trou, passez le quatrième argument à FALSE :
=SPLIT("a,,c", ",", TRUE, FALSE)
renvoie a, une cellule vide, c. Conservez la position des champs quand les données ont des valeurs manquantes, comme dans des lignes CSV.
Formules pratiques
Diviser toute une colonne
=ARRAYFORMULA(SPLIT(A2:A, ","))
Chaque ligne est divisée dans sa propre ligne de cellules.
Obtenir uniquement le n-ième morceau
=INDEX(SPLIT(A2, " "), 1, 2)
Renvoie le deuxième mot. INDEX choisit la ligne 1, colonne 2 du résultat. Pour obtenir le dernier morceau quel que soit leur nombre :
=INDEX(SPLIT(A2, " "), 1, COUNTA(SPLIT(A2, " ")))
Prénom et nom
=INDEX(SPLIT(A2, " "), 1, 1)
=REGEXEXTRACT(A2, "\S+$")
Utilisez REGEXEXTRACT pour le dernier mot, car elle fonctionne quel que soit le nombre de mots.
Mettre les morceaux en colonne
SPLIT se déverse vers la droite. Pour obtenir une liste verticale, entourez-la de TRANSPOSE :
=TRANSPOSE(SPLIT(A2, ","))
Diviser et nettoyer
Des éléments comme "a , b" laissent des espaces autour des morceaux :
=ARRAYFORMULA(TRIM(SPLIT(A2, ",")))
Diviser selon plusieurs séparateurs à la fois
Avec split_by_each activé, listez tous les séparateurs sous forme de caractères :
=SPLIT(A2, ",;|")
Cette formule divise au niveau d'une virgule, d'un point-virgule ou d'une barre verticale.
Diviser selon les sauts de ligne
=SPLIT(A2, CHAR(10))
Diviser une URL ou un chemin en parties
=SPLIT("example.com/blog/article-1", "/")
Renvoie example.com, blog, article-1.
Compter les éléments d'une cellule
=COUNTA(SPLIT(A2, ","))
Diviser en conservant le texte
SPLIT convertit les morceaux qui ressemblent à des nombres ou à des dates en véritables nombres et dates, ce qui peut supprimer les zéros initiaux ("007" devient 7). Si vous devez conserver du texte, mettez d'abord les cellules de résultat au format texte brut, ou reconstruisez avec TO_TEXT si nécessaire.
Erreurs courantes
#REF!: « Le résultat n'a pas été développé automatiquement, veuillez insérer des colonnes » ou « Le résultat de la matrice n'a pas été développé car il écraserait des données ». Quelque chose se trouve dans les cellules à droite. Videz-les.- Morceaux supplémentaires inattendus.
split_by_eachdivise au niveau de chaque caractère d'un séparateur de plusieurs caractères. Passez le troisième argument àFALSE. - Zéros initiaux perdus. Les morceaux ont été convertis en nombres. Utilisez le format texte brut.
- Espaces autour des morceaux. Entourez de
TRIM.
SPLIT, REGEXEXTRACT ou LEFT/MID ?
Utilisez SPLIT quand un séparateur clair délimite les parties. Utilisez REGEXEXTRACT quand vous voulez un morceau défini par sa forme plutôt que par un séparateur. Utilisez LEFT, MID et RIGHT pour des positions fixes. Pour faire l'inverse et réunir des morceaux, utilisez TEXTJOIN.
Questions fréquentes
Peut-on diviser en lignes plutôt qu'en colonnes ? Oui, entourez de TRANSPOSE.
Peut-on diviser selon un mot comme « et » ? Oui. Utilisez SPLIT(A2, " et ", FALSE), qui traite toute la chaîne comme un seul séparateur.
SPLIT tient-elle compte de la casse ? Oui, pour les lettres du séparateur.
Y a-t-il une limite au nombre de morceaux ? Seulement la limite de colonnes de la feuille.
Fonctions associées
TEXTJOIN: Réunit du texte avec un séparateur, l'inverse deSPLIT.REGEXEXTRACT: Extrait du texte par motif.TRANSPOSE: Échange les lignes et les colonnes.TRIM: Supprime les espaces en trop.ARRAYFORMULA: Applique une formule à toute une plage.