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

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 Entra 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 > Modulo, incolla sotto il codice nel file Modulo.

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 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 > Autonomia > 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

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il 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!
fondo officetab
Commenti (25)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
stai impilando più righe in una colonna, non più colonne ... non quello che stavo cercando.
Questo commento è stato fatto dal moderatore sul sito
Per impilare le colonne AP che si trovano in blocchi di 6 righe, inserisci queste formule nella cella R1 e riempi

=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)
Questo commento è stato fatto dal moderatore sul sito
Funziona perfettamente, grazie
Questo commento è stato fatto dal moderatore sul sito
Grazie per aver pubblicato questa soluzione! Nel caso in cui qualcuno abbia bisogno di uno spazio dopo/alla fine di ogni blocco, aggiungi semplicemente un conteggio aggiuntivo alle righe, quindi seguendo l'esempio sopra, invece di $A$6, scrivi $A$7. Immette uno "0" zero nella riga, ma puoi facilmente "Usa selezione per Trova" in Sublime per modificarli. Se conosci la soluzione che non aggiunge zero, per favore pubblica!?
Questo commento è stato fatto dal moderatore sul sito
per emettere una cella vuota invece di 0, eseguire una funzione SE>0, VERO-->emettere il contenuto della cella originale, FALSO-->emettere ""

=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),"")
Questo commento è stato fatto dal moderatore sul sito
Dannazione, ora non funziona! Ho provato con una nuova scheda ma ora è tornato a impilare i contenuti delle colonne in una invece del contenuto delle righe originariamente.
Questo commento è stato fatto dal moderatore sul sito
Annulla l'ultimo, mancato il passaggio del troncamento.
Questo commento è stato fatto dal moderatore sul sito
So che hai risposto a questa domanda molto tempo fa, ma puoi per favore spiegare cosa fa esattamente ogni parte di questa funzione?
Questo commento è stato fatto dal moderatore sul sito
Forse questo tutorial può aiutarti.https://www.extendoffice.com/documents/excel/3327-excel-convert-multiple-rows-to-columns.html
Questo commento è stato fatto dal moderatore sul sito
questo è solo un clickbait per farti scaricare un software a pagamento
Questo commento è stato fatto dal moderatore sul sito
Il primo download sarà gratuito in 60 giorni, dopodiché potrai decidere di pagare per l'utilizzo o meno.
Questo commento è stato fatto dal moderatore sul sito
Ciao, c'è qualcuno per convertire i dati sopra nel seguente modulo?
1
A
Lilly
2
B
Judy
...
Questo commento è stato fatto dal moderatore sul sito
Grazie per il tuo messaggio di partenza, questo tutorial https://www.extendoffice.com/documents/excel/5401-excel-stack-columns-into-one-column.html
sta parlando di come risolvere questo problema, puoi andare a vedere.
Questo commento è stato fatto dal moderatore sul sito
Ho dati che terminano nella stessa riga ma più colonne in cui voglio che siano impilati in una sequenza in cui i dati della colonna B andranno sotto i dati della colonna A in cui i dati finiscono per i dati della colonna A e C per andare sotto i dati della colonna A dove finiscono i dati della colonna B e così via. In questo modo avrò i dati di più colonne da inserire in una colonna. Come posso fare ciò?
Questo commento è stato fatto dal moderatore sul sito
Ciao, c'è un modo per fare in modo che la formula ignori le celle vuote che i tuoi dati potrebbero contenere?


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


Sto usando un foglio di supporto per creare un elenco contiguo per un elenco a discesa di convalida dei dati. Grazie in anticipo.
Questo commento è stato fatto dal moderatore sul sito
Scusa, non sono bravo con le formule, forse puoi provare a utilizzare Kutools per Excel Seleziona celle non vuote utilità per selezionare prima le celle vuote, quindi copiarle e incollarle in un'altra posizione, quindi utilizzare i metodi sopra.
Questo commento è stato fatto dal moderatore sul sito
Ciao, sto cercando di fare un ulteriore passo avanti con questo. Ho usato Stack Multiple Columns in One con VBA, codice e questo funziona. Ho usato le tabelle come sorgente con questo codice e ottengo l'elenco. C'è un modo per automatizzare l'esecuzione della Macro? In modo che quando aggiungo una nuova voce alla tabella, la Macro venga eseguita automaticamente e mantenga aggiornato l'elenco risultante?
Questo commento è stato fatto dal moderatore sul sito
Ciao, Chris Blackburn, scusa, temo di non riuscire a trovare un codice che possa essere eseguito automaticamente per aggiornare il risultato, forse qualcun altro può farlo.
Questo commento è stato fatto dal moderatore sul sito
Sto tentando di farlo su una tabella molto grande (centinaia di colonne e righe che sono tutte collegate a formule. Il mio excel continuerà a caricarsi e alla fine non risponderà. C'è un modo per superarlo? Grazie
Questo commento è stato fatto dal moderatore sul sito
Ciao, Tom, quale metodo applichi non funziona? Il metodo tre, lo strumento di intervallo di trasformazione deve funzionare.
Questo commento è stato fatto dal moderatore sul sito
Sto usando il metodo Stack Multiple Columns Into One With Formula e ha funzionato perfettamente, ma voglio che mantenga la formattazione, ad esempio alcune colonne erano in grassetto e 1 erano collegamenti ipertestuali. C'è qualcosa che può essere aggiunto alla formula per farlo accadere?
Questo commento è stato fatto dal moderatore sul sito
Ciao, Susan Milard, la loro formula può soddisfare le tue esigenze, puoi utilizzare lo strumento VBA o Transpose Range, entrambi possono soddisfarti.
Questo commento è stato fatto dal moderatore sul sito
Grazie mille, l'opzione formula ha funzionato molto bene... mi hai risparmiato molto tempo.
Questo commento è stato fatto dal moderatore sul sito
Grazie per la formula e VBA, ma nessuno dei due fa quello che dice il titolo del post. Mi aspettavo che impilassero le colonne, ma invece traspongono ogni riga in una colonna e le impilano... quindi impila le righe trasposte, non le colonne. Ancora molto utile per alcuni casi, ma qualcuno sa come modificare la formula e/o VBA per impilare effettivamente le colonne? Suppongo di poter trasporre l'intero intervallo di input, quindi utilizzare questi ...
Questo commento è stato fatto dal moderatore sul sito
Per coloro che cercano di impilare le colonne in una ma non le righe in una, è necessario avere un quadro chiaro di ciò che si vuole veramente fare. Supponiamo che tu abbia un array 3x3, vuoi che la tua funzione index() ottenga voci sotto forma di (riga, colonna) per (1,1), (2,1), (3,1), quindi (1,2), (2,2), (3,2) e così via.Quindi cosa vuoi da fare è fare in modo che index() faccia riferimento a una singola colonna contenente tutti i numeri di riga (1;2;3;1;2;3;1;2;3) e una singola colonna contenente tutti i numeri di colonna (1;1 ;1;2;2;2;3;3;3).Per ottenere (1;2;3;1;2;3;1;2;3), un approccio di programmazione comune consiste nell'usare 1+mod(some_counter -1,3) dove la funzione mod() fornisce i residui 0,1,2,0,1,2,...
Per ottenere (1;1;1;2;2;2;3;3;3), si usa 1+int((some_counter-1)/3) dove si ottiene 1+0, 1+0, 1+0 , 1+1, 1+1, 1+1, 1+2, 1+2, 1+2
Pertanto, per ottenere un array 3x3 impilato in uno, usi la formula (premi Ctrl + Maiusc + Invio):=index($A$1:$C$3, 1+mod(row(A1)-1,3), 1 +int((row(A1)-1)/3)))dove la riga(A1) funge da contatore mentre riempi la formula verso il basso
Se lo metti al contrario (riga in colonne, colonne in riga), otterrai righe impilate in una colonna=INDEX($A$1:$C$3, 1+INT((ROW(A1)-1)/ 3),1+MOD(ROW(A1)-1,3))che è essenzialmente ciò che fa la formula in questo articolo

In poche parole, la formula utilizzata per impilare le colonne di un array in una singola colonna sarebbe:=index( your_array_cells , 1+mod(row(A1)-1, number_of_rows_of_your_array ), 1+int((row(A1)-1 )/ numero_di_colonne_del_tuo_array)))
Non ci sono ancora commenti pubblicati qui
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL