Fonction TOCOL d'Excel pour convertir une plage en une seule colonne

  • Partage Ça
Michael Brown

Une façon simple de transformer un tableau ou une plage en une colonne avec la fonction TOCOL.

La possibilité de transposer des données de colonnes en lignes et inversement existe depuis longtemps dans Excel. Mais la conversion d'une plage de cellules en une seule colonne était une tâche difficile à réaliser. Aujourd'hui, cela change enfin. Microsoft a introduit une nouvelle fonction, appelée TOCOL, qui peut effectuer une transformation de tableau en colonne en un clin d'œil. Vous trouverez ci-dessous une liste de tâches que cette nouvelle fonction peut facilement résoudre.

    Fonction TOCOL d'Excel

    La fonction TOCOL d'Excel convertit un tableau ou une plage de cellules en une seule colonne.

    La fonction prend trois arguments, mais seul le premier est nécessaire.

    TOCOL(tableau, [ignorer], [scan_by_column])

    Où :

    Array (obligatoire) - un tableau ou une plage à transformer en colonne.

    Ignorer (facultatif) - définit s'il faut ignorer les blancs ou/et les erreurs. Peut être l'une de ces valeurs :

    • 0 ou omis (par défaut) - conserve toutes les valeurs
    • 1 - ignorer les blancs
    • 2 - ignorer les erreurs
    • 3 - ignorer les blancs et les erreurs

    Scan_by_column (facultatif) - détermine si le tableau doit être balayé horizontalement ou verticalement :

    • FAUX ou omis (par défaut) - parcourt le tableau par ligne de gauche à droite.
    • TRUE - parcourt le tableau par colonne de haut en bas.

    Conseils :

    • Pour convertir un tableau en une seule ligne, utilisez la fonction TOROW.
    • Pour effectuer la transformation inverse de colonne à tableau, utilisez soit la fonction WRAPCOLS pour envelopper par colonne, soit la fonction WRAPROWS pour envelopper par ligne.
    • Pour transposer un tableau de l'horizontale à la verticale ou vice versa, c'est-à-dire changer les lignes en colonnes, utilisez la fonction TRANSPOSE.

    Disponibilité du TOCOL

    TOCOL est une nouvelle fonction, qui est prise en charge dans Excel pour Microsoft 365 (pour Windows et Mac) et Excel pour le web.

    Formule TOCOL de base pour transformer une plage en colonne

    La formule TOCOL, dans sa forme la plus simple, ne nécessite qu'un seul argument - tableau Par exemple, pour placer un tableau bidimensionnel composé de 3 colonnes et de 4 rangées dans une seule colonne, la formule est la suivante :

    =TOCOL(A2:C5)

    La formule n'est saisie que dans une seule cellule (E2 dans cet exemple) et se répand automatiquement dans les cellules inférieures. En termes d'Excel, le résultat est appelé une plage de déversement.

    Comment fonctionne cette formule :

    Techniquement, l'intervalle A2:C5 est d'abord converti en un tableau à deux dimensions. Remarquez les lignes séparées par des points-virgules et les colonnes délimitées par des virgules :

    {"Apple","Banana","Cherry";1,0,3;4,#N/A,6;7,8,9}

    La fonction TOCOL balaie le tableau de gauche à droite et le transforme en un tableau vertical unidimensionnel :

    {"Apple";"Banana";"Cherry";1;0;3;4;#N/A;6;7;8;9}

    Le résultat est placé dans la cellule E2, d'où il se répand dans les cellules inférieures.

    Comment utiliser la fonction TOCOL dans Excel - exemples de formules

    Pour mieux comprendre les possibilités de la fonction TOCOL et les tâches qu'elle peut couvrir, examinons quelques exemples de formules.

    Transformez le tableau en colonne en ignorant les blancs et les erreurs.

    Comme vous l'avez peut-être remarqué dans l'exemple précédent, la formule TOCOL par défaut conserve toutes les valeurs du tableau source, y compris les cellules vides et les erreurs.

    Dans le tableau qui en résulte, les cellules vides sont représentées par des zéros, ce qui peut être assez déroutant, surtout si le tableau d'origine a des valeurs nulles. sauter les blancs Pour cela, il faut donner la valeur 1 au deuxième argument :

    =TOCOL(A2:C5, 1)

    A ignorer les erreurs le deuxième argument est fixé à 2 :

    =TOCOL(A2:C5, 2)

    Pour exclure les deux, les blancs et les erreurs , utilisez 3 pour le ignorer argument :

    =TOCOL(A2:C5, 3)

    Scanner le réseau horizontalement ou verticalement

    Avec l'option par défaut scan_by_column (FAUX ou omis), la fonction TOCOL balaie le tableau horizontalement par ligne. Pour traiter les valeurs par colonne, définissez cet argument à VRAI ou 1. Par exemple :

    =TOCOL(A2:C5, ,TRUE)

    Remarquez que, dans les deux cas, les tableaux retournés ont la même taille, mais les valeurs sont disposées dans un ordre différent.

    Combiner plusieurs plages dans une seule colonne

    Si vous avez affaire à plusieurs plages non contiguës, vous pouvez d'abord combiner les plages verticalement en un seul tableau à l'aide de la fonction VSTACK, puis utiliser TOCOL pour transformer le tableau combiné en une colonne.

    En supposant que la première plage est A2:C4 et que la deuxième plage est A8:C9, la formule prend la forme suivante :

    =TOCOL(VSTACK(A2:C4, A8:C9))

    Cette formule illustre le comportement par défaut : elle lit les tableaux combinés horizontalement, de gauche à droite, comme le montre la colonne E de l'image ci-dessous.

    Pour lire les valeurs verticalement de haut en bas, vous définissez le 3ème argument de TOCOL à TRUE :

    =TOCOL(VSTACK(A2:C4, A8:C9), ,TRUE)

    Veuillez noter que, dans ce cas, la formule renvoie d'abord les valeurs de la colonne A des deux tableaux, puis celles de la colonne B, et ainsi de suite. La raison en est que TOCOL analyse un seul tableau empilé, et non les plages individuelles d'origine.

    Si votre logique d'entreprise nécessite d'empiler les plages d'origine horizontalement plutôt que verticalement, utilisez la fonction HSTACK au lieu de VSTACK.

    Pour ajouter chaque tableau suivant à la droite du tableau précédent et lire les tableaux combinés horizontalement, la formule est la suivante :

    =TOCOL(HSTACK(A2:C4, A8:C10))

    Pour ajouter chaque tableau suivant à la droite du tableau précédent et balayer les tableaux combinés verticalement, la formule est la suivante :

    =TOCOL(HSTACK(A2:C4, A8:C10), ,TRUE)

    Extraire des valeurs uniques d'une plage à plusieurs colonnes

    La fonction UNIQUE d'Excel peut facilement trouver des valeurs uniques dans une seule colonne ou ligne et renvoyer des lignes uniques, mais elle ne peut pas extraire des valeurs uniques d'un tableau à plusieurs colonnes. La solution consiste à l'utiliser conjointement avec la fonction TOCOL.

    Par exemple, pour extraire toutes les valeurs différentes (distinctes) de l'intervalle A2:C7, la formule est la suivante :

    =UNIQUE(TOCOL(A2:C7))

    En outre, vous pouvez envelopper la formule ci-dessus dans la fonction SORT pour classer le tableau retourné dans l'ordre alphabétique :

    =TRI(UNIQUE(TOCOL(A2:C7)))

    Comment convertir une plage en colonne dans Excel 365 - 2010

    Dans les versions d'Excel où la fonction TOCOL n'est pas prise en charge, il existe quelques solutions alternatives pour transformer une plage de cellules en une colonne. Ces solutions sont assez délicates, mais fonctionnent quand même.

    Pour lire la gamme par ligne :

    INDEX( gamme , QUOTIENT(LIGNE(A1)-1, COLONNES( gamme ))+1, MOD(ROW(A1)-1, COLUMNS( gamme ))+1)

    Pour lire la gamme par colonne :

    INDEX( gamme , MOD(ROW(A1)-1, ROWS( gamme ))+1, QUOTIENT(RANGÉE(A1)-1, RANGÉES( gamme ))+1)

    Pour notre ensemble de données d'échantillon, les formules sont les suivantes :

    Pour balayer la gamme horizontalement, de gauche à droite :

    =INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)

    Cette formule est équivalente à la fonction TOCOL avec le 3ème argument défini à FALSE ou omis :

    =TOCOL(A2:C5)

    Pour balayer la gamme verticalement, de haut en bas :

    =INDEX($A$2:$C$5, MOD(ROW(A1)-1, ROWS($A$2:$C$5))+1, QUOTIENT(ROW(A1)-1, ROWS($A$2:$C$5))+1)

    Cette formule est comparable à la fonction TOCOL avec le 3ème argument défini comme VRAI :

    =TOCOL(A2:C5, ,TRUE)

    Contrairement à TOCOL, les formules alternatives doivent être saisies dans chaque cellule où vous souhaitez que les résultats apparaissent. Dans notre cas, les formules vont dans les cellules E2 (par ligne) et G2 (par colonne), puis sont copiées vers la ligne 13.

    Si les formules sont copiées sur plus de lignes que nécessaire, une erreur #REF ! apparaîtra dans les cellules "supplémentaires". Pour éviter que cela ne se produise, vous pouvez imbriquer les formules dans la fonction IFERROR comme suit :

    =IFERROR(INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1), "")

    Remarquez que pour que les formules se copient correctement, nous verrouillons la plage en utilisant des références de cellules absolues ($A$2:$C$5). Au lieu de cela, vous pouvez utiliser une plage nommée.

    Comment fonctionnent ces formules

    Vous trouverez ci-dessous une analyse détaillée de la première formule qui classe les cellules par rangée :

    =INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)

    L'idée est d'utiliser la fonction INDEX pour renvoyer la valeur d'une certaine cellule en fonction de ses numéros de ligne et de colonne relatifs dans la plage.

    Le site numéro de rang est calculé par cette combinaison :

    QUOTIENT(LIGNE(A1)-1, COLONNES($A$2:$C$5))+1

    QUOTIENT renvoie la partie entière d'une division.

    Pour numérateur vous utilisez ROW(A1)-1, qui renvoie un numéro de série allant de 0 en E2 (première cellule dans laquelle la formule a été saisie) à 11 en E13 (dernière cellule dans laquelle la formule a été saisie).

    Le site dénominateur brough by COLUMNS($A$2:$C$5)) est constante et égale au nombre de colonnes de votre plage (3 dans notre cas).

    Maintenant, si vous vérifiez le résultat du QUOTIENT pour les 3 premières cellules (E2:E4), vous verrez qu'il est égal à 0 (parce que la partie entière de la division est égale à zéro). L'ajout de 1 donne le numéro de ligne 1.

    Pour les 3 cellules suivantes (E5:E5), QUOTIENT renvoie 1, et l'opération +1 fournit le numéro de ligne 2. Et ainsi de suite.

    En d'autres termes, cette partie de la formule crée une séquence de chiffres répétitive telle que 1,1,1,2,2,2,3,3,3,4,4,4,... Chaque chiffre se répète autant de fois qu'il y a de colonnes dans votre plage.

    Pour calculer le numéro de colonne vous construisez une séquence numérique appropriée à l'aide de la fonction MOD :

    MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1

    Comme il y a 3 colonnes dans notre plage (A2:C5), la séquence doit être 1,2,3,1,2,3,...

    La fonction MOD renvoie le reste après la division.

    Dans E2, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)

    devient

    MOD(1-1, 3)+1)

    et renvoie 1.

    Dans E3, MOD(ROW(A2)-1, COLUMNS($A$2:$C$5))+1)

    devient

    MOD(2-1, 3)+1)

    et renvoie 2.

    Une fois les numéros de ligne et de colonne établis, INDEX n'a aucun mal à aller chercher la valeur requise.

    En E2, INDEX($A$2:$C$5, 1, 1) renvoie la valeur de la 1ère ligne et de la 1ère colonne de la plage référencée, c'est-à-dire de la cellule A2.

    Dans E3, INDEX($A$2:$C$5, 1, 2) renvoie la valeur de la 1ère ligne et de la 2ème colonne, c'est-à-dire de la cellule B2.

    Et ainsi de suite.

    La deuxième formule, qui balaie la plage par colonne, fonctionne de manière similaire, à la différence qu'elle utilise MOD pour obtenir le numéro de ligne et QUOTIENT pour obtenir le numéro de colonne.

    La fonction TOCOL ne fonctionne pas

    Si la fonction TOCOL génère une erreur, il est fort probable qu'il s'agisse d'une de ces raisons :

    TOCOL n'est pas supporté dans votre Excel

    Lorsque vous obtenez une erreur #NAME ?, la première chose à vérifier est l'orthographe correcte du nom de la fonction. Si le nom est correct mais que l'erreur persiste, la fonction n'est pas disponible dans votre version d'Excel. Dans ce cas, envisagez d'utiliser une alternative TOCOL.

    Le tableau est trop grand

    Une erreur #NUM indique que le tableau ne peut pas tenir dans une colonne, ce qui est le cas lorsque vous faites référence à des colonnes ou des lignes entières.

    Il n'y a pas assez de cellules vides

    Lorsqu'une erreur #SPILL se produit, vérifiez que la colonne dans laquelle la formule est saisie comporte suffisamment de cellules vides pour être remplie avec les résultats. Si les cellules sont visuellement vides, assurez-vous qu'elles ne comportent pas d'espaces ni d'autres caractères non imprimables. Pour plus d'informations, voir Comment corriger l'erreur #SPILL dans Excel.

    C'est ainsi que vous pouvez utiliser la fonction TOCOL dans Excel 365 et les solutions alternatives dans les versions antérieures pour transformer un tableau à 2 dimensions en une seule colonne. Je vous remercie de votre lecture et j'espère vous voir sur notre blog la semaine prochaine !

    Cahier d'exercices

    Fonction Excel TOCOL - exemples de formules (fichier .xlsx)

    Michael Brown est un passionné de technologie passionné par la simplification de processus complexes à l'aide d'outils logiciels. Avec plus d'une décennie d'expérience dans l'industrie de la technologie, il a perfectionné ses compétences dans Microsoft Excel et Outlook, ainsi que dans Google Sheets et Docs. Le blog de Michael est dédié au partage de ses connaissances et de son expertise avec les autres, en fournissant des conseils et des tutoriels faciles à suivre pour améliorer la productivité et l'efficacité. Que vous soyez un professionnel chevronné ou un débutant, le blog de Michael offre des informations précieuses et des conseils pratiques pour tirer le meilleur parti de ces outils logiciels essentiels.