Vai al contenuto principale

Come impilare rapidamente più colonne in una colonna in Excel?

in Excel, la funzione Testo in colonne può dividere una cella in più colonne in base al delimitatore, ma se ci sono modi per impilare più colonne in una colonna come mostrato nell'immagine sottostante? In questo articolo, introdurrò alcuni trucchi per risolvere rapidamente questo compito.
doc impila le colonne in una 1

Impila più colonne in una con la formula

Impila più colonne in una con VBA

Impila più colonne in una con Transform Range buona idea 3


Impila più colonne in una con la formula

1. Seleziona l'intervallo che desideri impilare e vai al file Nome casella per dare un nome a questo intervallo e premere entrare chiave. Vedi screenshot:
doc impila le colonne in una 2

2. Quindi selezionare una cella vuota in cui si desidera inserire i risultati, immettere questa formula =INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1), stampa Enter e trascinare la maniglia di riempimento verso il basso finché non viene visualizzato un errore. Vedi screenshot:
doc impila le colonne in una 3

Nella formula, MyData è il nome dell'intervallo specificato nel passaggio 1.

Impila più colonne in una con VBA

Ecco un codice VBA che può aiutare anche te.

1. Stampa Alt + F11 tasti da visualizzare Microsoft Visual Basic, Applications Edition finestra.

2. Clic inserire > Moduli, incolla sotto il codice nel file Moduli.

VBA: impila le colonne su una

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 impila le colonne in una 4

3. Stampa F5 per eseguire il codice, viene visualizzata una finestra di dialogo per selezionare i dati di origine e fare clic su OK, per selezionare una cella in cui posizionare i risultati. Vedi screenshot:
doc impila le colonne in una 5

4. Clic OK. Ora le colonne sono state impilate in una colonna.
doc impila le colonne in una 6


Impila più colonne in una con Transform Range

Per candidarsi Kutools for Excel'S Trasforma intervallo l'utilità può anche aiutarti a risolvere rapidamente questo problema.

Kutools for Excel, con oltre 300 funzioni utili, rende il tuo lavoro più facile. 

Dopo shavasana, sedersi in silenzio; saluti; installazione gratuita Kutools per Excel, per favore fai come di seguito:

1. Selezionare i dati delle colonne che si utilizzano e fare clic su Kutools > Escursione > Trasforma intervallo. Vedi screenshot:
doc impila le colonne in una 8

2. Nel Trasforma intervallo dialogo, controlla Intervallo su singola colonna opzione e fare clic Ok, quindi seleziona una cella per inserire i risultati. Vedi screenshot:
doc impila le colonne in una 9

3. Clic OK. Ora le colonne sono state impilate in una singola colonna.
doc impila le colonne in una 1

I migliori strumenti per la produttività in ufficio

🤖 Assistente AI di Kutools: Rivoluziona l'analisi dei dati basandosi su: Esecuzione intelligente   |  Genera codice  |  Crea formule personalizzate  |  Analizzare i dati e generare grafici  |  Richiama le funzioni di Kutools...
Funzioni popolari: Trova, evidenzia o identifica i duplicati   |  Elimina righe vuote   |  Combina colonne o celle senza perdere dati   |   Round senza formula ...
Super ricerca: VLookup a criteri multipli    VLookup a valori multipli  |   VLookup su più fogli   |   Ricerca fuzzy ....
Elenco a discesa avanzato: Crea rapidamente un elenco a discesa   |  Elenco a discesa dipendente   |  Elenco a discesa a selezione multipla ....
Gestore di colonna: Aggiungi un numero specifico di colonne  |  Sposta colonne  |  Attiva/disattiva lo stato di visibilità delle colonne nascoste  |  Confronta intervalli e colonne ...
Funzionalità in primo piano: Messa a fuoco della griglia   |  Vista di progettazione   |   Grande barra delle formule    Gestore di cartelle di lavoro e fogli   |  Resource Library (Testo automatico)   |  Date picker   |  Combina fogli di lavoro   |  Crittografa/decrittografa le celle    Invia e-mail per elenco   |  Super filtro   |   Filtro speciale (filtro grassetto/corsivo/barrato...) ...
I 15 migliori set di strumenti12 Testo Strumenti (aggiungi testo, Rimuovi personaggi, ...)   |   50+ Grafico Tipi (Diagramma di Gantt, ...)   |   40+ Pratico Formule (Calcola l'età in base al compleanno, ...)   |   19 Inserimento Strumenti (Inserisci il codice QR, Inserisci immagine dal percorso, ...)   |   12 Conversione Strumenti (Numeri in parole, Conversione di valuta, ...)   |   7 Unisci e dividi Strumenti (Combina righe avanzate, Celle divise, ...)   |   ... e altro ancora

Potenzia le tue competenze di Excel con Kutools per Excel e sperimenta l'efficienza come mai prima d'ora. Kutools per Excel offre oltre 300 funzionalità avanzate per aumentare la produttività e risparmiare tempo.  Fai clic qui per ottenere la funzionalità di cui hai più bisogno...

Descrizione


Office Tab porta l'interfaccia a schede in Office e semplifica notevolmente il tuo lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
Comments (25)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
For those looking to stack columns into one but not rows into one, you need to have a clear picture of what you really want to do.Suppose you have some 3x3 array, you want your index() function to get entries in the form of (row,column) for (1,1), (2,1), (3,1), then (1,2), (2,2), (3,2) then so on.So what you want to do is to have index() refer to a single column containing all the row numbers (1;2;3;1;2;3;1;2;3) and a single column containing all the column numbers (1;1;1;2;2;2;3;3;3).To get (1;2;3;1;2;3;1;2;3), a common programming approach is to use 1+mod(some_counter-1,3) where the mod() function gives the residuals 0,1,2,0,1,2,...
To get (1;1;1;2;2;2;3;3;3), one uses 1+int((some_counter-1)/3) where it gives 1+0, 1+0, 1+0, 1+1, 1+1, 1+1, 1+2, 1+2, 1+2
Therefore, to get a 3x3 array stacked into one, you use the formula (press Ctrl +Shft + Enter):=index( $A$1:$C$3, 1+mod(row(A1)-1,3), 1+int((row(A1)-1)/3)))where row(A1) serves as the counter as you fill your formula downwards
If you put it the other way round (row to columns, columns to row), you will get rows stacked into one column=INDEX( $A$1:$C$3, 1+INT((ROW(A1)-1)/3),1+MOD(ROW(A1)-1,3))which is essentially what the formula in this article does

In a nutshell, the formula used to stack columns in an array into a single column would be:=index( your_array_cells , 1+mod(row(A1)-1, number_of_rows_of_your_array ), 1+int((row(A1)-1)/ number_of_columns_of_your_array)))
This comment was minimized by the moderator on the site
Thank you for the formula and VBA, but neither one does what the title of the post says. I was expecting them to stack the columns, but instead they transpose each row into a column and stacks those... so it's stacking transposed rows, not columns. Still very helpful for some cases, but does anyone know how to modify the formula and/or VBA to actually stack the columns? I suppose I could transpose the entire input range then use these...
This comment was minimized by the moderator on the site
Thank you, a lot, the formula option worked very well.. your saved my lot of time.
This comment was minimized by the moderator on the site
I am using the Stack Multiple Columns Into One With Formula method and it worked perfectly, but I want it to maintain the formatting, i.e. some columns were bold & 1 was hyperlinks. Is there something that can be added to the formula to make this happen?
This comment was minimized by the moderator on the site
Hi, Susan Milard, their formula can meet your need, you can use the VBA or the Transpose Range tool,both of them can satisfy you.
This comment was minimized by the moderator on the site
I am attempting to do this over a very large table (100s of columns and rows that are all linked to formulas. My excel will keep loading and then ultimately go to not responding. Is there a way to get past this? Thanks
This comment was minimized by the moderator on the site
Hi, Tom, which method you apply does not work? The method three, transform range tool must can work.
This comment was minimized by the moderator on the site
Hi, I'm looking to go a step further with this. I've used Stack Multiple Columns Into One With VBA, code and this works. I've used Tables as the source with this code and I get the list. Is there a way to automate running the Macro? So that when I add a new entry into the table the Macro automatically runs and keeps the resulting list up to date?
This comment was minimized by the moderator on the site
Hi, Chris Blackburn, sorry I am affraid I cannot find a code can automatically run to update the result, maybe someone else can.
This comment was minimized by the moderator on the site
Hi, is there a way to make the formula ignore any blank cells your data may contain?


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


I am using a helper sheet to create a contiguous list for a data validation drop down list. Thanks in advance.
This comment was minimized by the moderator on the site
Sorry, I am not good at formula, maybe you can try to use Kutools for Excel's Select Nonblank cells utility to select the unempty cells firstly, and copy and paste them to another location, then use above methods.
This comment was minimized by the moderator on the site
I have data which ends at the same row but multiple columns in which I want them to be stacked in a sequence where B column data will go under A column data where the data ends for A column and C column data to go under A column data where the data from B column ends and so on. This way I will have data from multiple columns to fit into one column. How can I do that?
This comment was minimized by the moderator on the site
Hello , is there any to convert above data to following form ??
1
A
Lilly
2
B
Judy
...
This comment was minimized by the moderator on the site
Thanks for your leaving message, this tutorial https://www.extendoffice.com/documents/excel/5401-excel-stack-columns-into-one-column.html
is talking about how to solve this problem, you can go to view.
This comment was minimized by the moderator on the site
this is just a clickbait to have you download a paying software
This comment was minimized by the moderator on the site
The first download will be free to use in 60 days, after that, you can decide to pay for use or not.
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations