Note: The other languages of the website are Google-translated. Back to English
English English

Comment empiler rapidement plusieurs colonnes dans une colonne dans Excel?

dans Excel, la fonction Texte en colonnes peut diviser une cellule en plusieurs colonnes en fonction du délimiteur, mais s'il existe des moyens d'empiler plusieurs colonnes dans une colonne comme illustré ci-dessous? Dans cet article, je présenterai quelques astuces pour résoudre rapidement cette tâche.
doc empiler les colonnes en un 1

Empilez plusieurs colonnes en une avec une formule

Empilez plusieurs colonnes en une avec VBA

Empilez plusieurs colonnes en une avec Transform Range bonne idée3


Empilez plusieurs colonnes en une avec une formule

1. Sélectionnez la plage que vous souhaitez empiler et accédez à la Zone Nom pour donner un nom à cette plage et appuyez sur Entrer clé. Voir la capture d'écran:
doc empiler les colonnes en un 2

2. Sélectionnez ensuite une cellule vide dans laquelle vous souhaitez placer les résultats, entrez cette formule =INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1), presse Entetouche r et faites glisser la poignée de recopie vers le bas jusqu'à ce qu'une erreur s'affiche. Voir la capture d'écran:
doc empiler les colonnes en un 3

Dans la formule, MyData est le nom de plage que vous avez spécifié à l'étape 1.

Empilez plusieurs colonnes en une avec VBA

Voici un code VBA qui peut également vous aider.

1. presse Alt + F11 touches à afficher Microsoft Visual Basic pour applications fenêtre.

2. Cliquez insérer > Module, collez ci-dessous le code dans le Module.

VBA: empilez les colonnes en une

Sub ConvertRangeToColumn()
'UpdatebyExtendoffice
Dim Range1 As Range, Range2 As Range, Rng As Range
Dim rowIndex As Integer
xTitleId = "KutoolsforExcel"
Set Range1 = Application.Selection
Set Range1 = Application.InputBox("Source Ranges:", xTitleId, Range1.Address, Type:=8)
Set Range2 = Application.InputBox("Convert to (single cell):", xTitleId, Type:=8)
rowIndex = 0
Application.ScreenUpdating = False
For Each Rng In Range1.Rows
    Rng.Copy
    Range2.Offset(rowIndex, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
    rowIndex = rowIndex + Rng.Columns.Count
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

doc empiler les colonnes en un 4

3. presse F5 pour exécuter le code, une boîte de dialogue apparaît pour sélectionner les données source, puis cliquez sur OK, pour sélectionner une cellule dans laquelle placer les résultats. Voir la capture d'écran:
doc empiler les colonnes en un 5

4. Cliquez OK. Maintenant, les colonnes ont été empilées dans une colonne.
doc empiler les colonnes en un 6


Empilez plusieurs colonnes en une avec Transform Range

Pour appliquer Kutools pour Excel's Transformer la gamme L'utilitaire peut également vous aider à résoudre rapidement ce problème.

Kutools pour Excel, avec plus de 300 fonctions pratiques, rend vos travaux plus faciles. 

Après installation gratuite Kutools for Excel, procédez comme suit:

1. Sélectionnez les données de colonnes que vous utilisez et cliquez sur Kutools > Autonomie > Transformer la gamme. Voir la capture d'écran:
doc empiler les colonnes en un 8

2. dans le Transformer la gamme boîte de dialogue, vérifier Plage à une seule colonne option, et cliquez Ok, puis sélectionnez une cellule pour placer les résultats. Voir la capture d'écran:
doc empiler les colonnes en un 9

3. Cliquez OK. Maintenant, les colonnes ont été empilées en une seule colonne.
doc empiler les colonnes en un 1


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (25)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
vous empilez plusieurs lignes dans une colonne, pas plusieurs colonnes ... pas ce que je cherchais.
Ce commentaire a été minimisé par le modérateur sur le site
Pour empiler les colonnes AP qui sont en blocs de 6 lignes, mettez ces formules dans la cellule R1 et remplissez

=OFFSET($A$1,MOD(ROW()-ROW($R$1),ROWS($A$1:$A$6)),TRUNC((ROW()-ROW($R$1))/ROWS($A$1:$A$6)),1,1)
Ce commentaire a été minimisé par le modérateur sur le site
Cela fonctionne parfaitement, merci
Ce commentaire a été minimisé par le modérateur sur le site
Merci d'avoir posté cette solution ! Au cas où quelqu'un aurait besoin d'un espace après/à la fin de chaque bloc, ajoutez simplement un nombre supplémentaire aux lignes, donc en suivant l'exemple ci-dessus, au lieu de $A$6, écrivez $A$7. Il entre un zéro "0" dans la ligne, mais vous pouvez facilement "Utiliser la sélection pour rechercher" dans Sublime pour les éditer. Si vous connaissez la solution qui n'ajoute pas de zéro, merci de poster !?
Ce commentaire a été minimisé par le modérateur sur le site
pour sortir une cellule vide au lieu de 0, faire une fonction IF>0, TRUE-->sortir le contenu original de la cellule, FALSE-->sortir ""

=if(OFFSET($A$1,MOD(ROW()-ROW($R$1),ROWS($A$1:$A$6)),TRUNC((ROW()-ROW($R$1))/ROWS($A$1:$A$6)),1,1)>0,OFFSET($A$1,MOD(ROW()-ROW($R$1),ROWS($A$1:$A$6)),TRUNC((ROW()-ROW($R$1))/ROWS($A$1:$A$6)),1,1),"")
Ce commentaire a été minimisé par le modérateur sur le site
Dang, maintenant ça ne marche plus ! Essayé sur un nouvel onglet, mais il revient maintenant à empiler le contenu des colonnes en un au lieu du contenu des lignes d'origine.
Ce commentaire a été minimisé par le modérateur sur le site
Annulez ce dernier, vous avez raté l'étape de troncature.
Ce commentaire a été minimisé par le modérateur sur le site
Je sais que vous avez répondu à cette question il y a très longtemps, mais pouvez-vous expliquer ce que fait exactement chaque partie de cette fonction ?
Ce commentaire a été minimisé par le modérateur sur le site
Peut-être que ce tutoriel peut vous aider.https://www.extendoffice.com/documents/excel/3327-excel-convert-multiple-rows-to-columns.html
Ce commentaire a été minimisé par le modérateur sur le site
ce n'est qu'un clickbait pour vous faire télécharger un logiciel payant
Ce commentaire a été minimisé par le modérateur sur le site
Le premier téléchargement sera gratuit dans 60 jours, après cela, vous pourrez décider de payer ou non pour l'utilisation.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, y a-t-il un moyen de convertir les données ci-dessus au formulaire suivant ??
1
A
Lilly
2
B
Judy
plus
Ce commentaire a été minimisé par le modérateur sur le site
Merci pour votre message de départ, ce tutoriel https://www.extendoffice.com/documents/excel/5401-excel-stack-columns-into-one-column.html
parle de la façon de résoudre ce problème, vous pouvez aller voir.
Ce commentaire a été minimisé par le modérateur sur le site
J'ai des données qui se terminent sur la même ligne mais plusieurs colonnes dans lesquelles je veux qu'elles soient empilées dans une séquence où les données de la colonne B iront sous les données de la colonne A où les données se terminent pour les données de la colonne A et C sous les données de la colonne A où les données de la colonne B se terminent et ainsi de suite. De cette façon, j'aurai des données de plusieurs colonnes pour tenir dans une colonne. Comment puis je faire ça?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, existe-t-il un moyen de faire en sorte que la formule ignore les cellules vides que vos données peuvent contenir ?


=INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1),


J'utilise une feuille d'aide pour créer une liste contiguë pour une liste déroulante de validation des données. Merci d'avance.
Ce commentaire a été minimisé par le modérateur sur le site
Désolé, je ne suis pas doué pour les formules, vous pouvez peut-être essayer d'utiliser Kutools for Excel's Select Nonblank cells utilitaire pour sélectionner d'abord les cellules non vides, puis copiez-les et collez-les à un autre emplacement, puis utilisez les méthodes ci-dessus.
Ce commentaire a été minimisé par le modérateur sur le site
Salut, je cherche à aller plus loin avec ça. J'ai utilisé Stack Multiple Columns Into One With VBA, code et cela fonctionne. J'ai utilisé Tables comme source avec ce code et j'obtiens la liste. Existe-t-il un moyen d'automatiser l'exécution de la macro ? Ainsi, lorsque j'ajoute une nouvelle entrée dans la table, la macro s'exécute automatiquement et maintient la liste résultante à jour ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut, Chris Blackburn, désolé, j'ai peur de ne pas trouver de code pouvant s'exécuter automatiquement pour mettre à jour le résultat, peut-être que quelqu'un d'autre le pourra.
Ce commentaire a été minimisé par le modérateur sur le site
J'essaie de le faire sur une très grande table (des centaines de colonnes et de lignes qui sont toutes liées à des formules. Mon Excel continuera à se charger et finira par ne pas répondre. Existe-t-il un moyen de contourner cela? Merci
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, Tom, quelle méthode vous appliquez ne fonctionne pas ? La troisième méthode, l'outil de plage de transformation doit fonctionner.
Ce commentaire a été minimisé par le modérateur sur le site
J'utilise la méthode Stack Multiple Columns Into One With Formula et cela a parfaitement fonctionné, mais je veux qu'il conserve la mise en forme, c'est-à-dire que certaines colonnes étaient en gras et 1 était des hyperliens. Y a-t-il quelque chose qui peut être ajouté à la formule pour que cela se produise?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, Susan Milard, leur formule peut répondre à vos besoins, vous pouvez utiliser le VBA ou l'outil Transpose Range, les deux peuvent vous satisfaire.
Ce commentaire a été minimisé par le modérateur sur le site
Merci beaucoup, l'option formule a très bien fonctionné.. vous m'avez fait gagner beaucoup de temps.
Ce commentaire a été minimisé par le modérateur sur le site
Merci pour la formule et VBA, mais aucun ne fait ce que dit le titre du message. Je m'attendais à ce qu'ils empilent les colonnes, mais à la place, ils transposent chaque ligne dans une colonne et les empilent ... donc c'est empiler des lignes transposées, pas des colonnes. Toujours très utile pour certains cas, mais est-ce que quelqu'un sait comment modifier la formule et/ou VBA pour empiler réellement les colonnes ? Je suppose que je pourrais transposer toute la plage d'entrée puis utiliser ces...
Ce commentaire a été minimisé par le modérateur sur le site
Pour ceux qui cherchent à empiler des colonnes en une seule mais pas des lignes en une seule, vous devez avoir une idée claire de ce que vous voulez vraiment faire. Supposons que vous ayez un tableau 3x3, vous voulez que votre fonction index() obtienne des entrées sous la forme de (ligne, colonne) pour (1,1), (2,1), (3,1), puis (1,2), (2,2), (3,2) puis ainsi de suite.Alors ce que vous voulez faire est d'avoir index() se référer à une seule colonne contenant tous les numéros de ligne (1;2;3;1;2;3;1;2;3) et une seule colonne contenant tous les numéros de colonne (1;1 ;1;2;2;2;3;3;3).Pour obtenir (1;2;3;1;2;3;1;2;3), une approche de programmation courante consiste à utiliser 1+mod(some_counter -1,3) où la fonction mod() donne les résidus 0,1,2,0,1,2,...
Pour obtenir (1;1;1;2;2;2;3;3;3), on utilise 1+int((some_counter-1)/3) où cela donne 1+0, 1+0, 1+0 , 1+1, 1+1, 1+1, 1+2, 1+2, 1+2
Par conséquent, pour obtenir un tableau 3x3 empilé en un seul, vous utilisez la formule (appuyez sur Ctrl + Maj + Entrée):=index( $A$1:$C$3, 1+mod(row(A1)-1,3), 1 +int((row(A1)-1)/3)))où row(A1) sert de compteur lorsque vous remplissez votre formule vers le bas
Si vous le mettez dans l'autre sens (ligne vers colonnes, colonnes vers ligne), vous obtiendrez des lignes empilées dans une colonne=INDEX( $A$1:$C$3, 1+INT((ROW(A1)-1)/ 3),1+MOD(ROW(A1)-1,3))qui est essentiellement ce que fait la formule de cet article

En un mot, la formule utilisée pour empiler les colonnes d'un tableau dans une seule colonne serait :=index( your_array_cells , 1+mod(row(A1)-1, number_of_rows_of_your_array ), 1+int((row(A1)-1 )/ nombre_de_colonnes_de_votre_tableau)))
Il n'y a pas encore de commentaires postés ici
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés