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

Como empilhar rapidamente várias colunas em uma coluna no Excel?

no Excel, a função Texto para colunas pode dividir uma célula em várias colunas com base no delimitador, mas se houver alguma maneira de empilhar várias colunas em uma coluna, como mostrado na imagem abaixo? Neste artigo, vou apresentar alguns truques para resolver essa tarefa rapidamente.
doc empilhar colunas para uma 1

Empilhe várias colunas em uma com fórmula

Empilhe várias colunas em uma com VBA

Empilhe várias colunas em uma com Transform Range boa ideia 3


Empilhe várias colunas em uma com fórmula

1. Selecione o intervalo que deseja empilhar e vá para o nome Box para dar um nome a este intervalo e pressione Entrar chave. Veja a imagem:
doc empilhar colunas para uma 2

2. Em seguida, selecione uma célula em branco onde deseja colocar os resultados, insira esta fórmula =INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1), pressione Entee arraste a alça de preenchimento para baixo até que um erro seja exibido. Veja a imagem:
doc empilhar colunas para uma 3

Na fórmula, MyData é o nome do intervalo que você especificou na etapa 1.

Empilhe várias colunas em uma com VBA

Aqui está um código VBA que também pode ajudá-lo.

1. Pressione Alt + F11 chaves para mostrar Microsoft Visual Basic para Aplicações janela.

2. Clique inserção > Módulo, cole o código abaixo no Módulo.

VBA: Empilhar colunas em uma

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 empilhar colunas para uma 4

3. Pressione F5 para executar o código, uma caixa de diálogo é exibida para selecionar os dados de origem e clique em OK, para selecionar uma célula para colocar os resultados. Veja a imagem:
doc empilhar colunas para uma 5

4. Clique OK. Agora as colunas foram empilhadas em uma coluna.
doc empilhar colunas para uma 6


Empilhe várias colunas em uma com Transform Range

Aplicar Kutools for Excel'S Faixa de transformação utilitário também pode ajudá-lo a resolver esse problema rapidamente.

Kutools for Excel, com mais de 300 funções úteis, tornam seus trabalhos mais fáceis. 

Depois de instalação grátis Kutools para Excel, faça o seguinte:

1. Selecione os dados das colunas que você usa e clique em Kutools > Variação > Faixa de transformação. Veja a imagem:
doc empilhar colunas para uma 8

2. No Faixa de transformação diálogo, verificar Faixa para coluna única opção e clique Oke selecione uma célula para inserir os resultados. Veja a imagem:
doc empilhar colunas para uma 9

3. Clique OK. Agora as colunas foram empilhadas em uma única coluna.
doc empilhar colunas para uma 1


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2021 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Recursos completos de avaliação gratuita de 30 dias. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Comentários (25)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
você está empilhando várias linhas em uma coluna, não várias colunas ... não o que eu estava procurando.
Este comentário foi feito pelo moderador no site
Para empilhar as colunas AP que estão em blocos de 6 linhas coloque esta fórmula na célula R1 e preencha

=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)
Este comentário foi feito pelo moderador no site
Isso funciona perfeito, obrigado
Este comentário foi feito pelo moderador no site
Obrigado por postar esta solução! Caso alguém precise de um espaço após/no final de cada bloco, basta adicionar uma contagem adicional às linhas, então, seguindo o exemplo acima, em vez de $A$6, escreva $A$7. Ele insere um zero '0' na linha, mas você pode facilmente 'Usar seleção para Localizar' no Sublime para editá-los. Se você conhece a solução que não adiciona um zero, por favor poste!?
Este comentário foi feito pelo moderador no site
para gerar uma célula em branco em vez de 0, faça uma função IF> 0, TRUE--> produza o conteúdo da célula original, FALSE--> output ""

=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),"")
Este comentário foi feito pelo moderador no site
Droga, agora não funciona! Tentei em uma nova guia, mas agora voltou a empilhar o conteúdo da coluna em uma, em vez do conteúdo da linha originalmente.
Este comentário foi feito pelo moderador no site
Cancele esse último, faltou a etapa de truncar.
Este comentário foi feito pelo moderador no site
Eu sei que você respondeu a essa pergunta há muito tempo, mas você pode explicar o que exatamente cada parte dessa função faz?
Este comentário foi feito pelo moderador no site
Talvez este tutorial possa ajudá-lo.https://www.extendoffice.com/documents/excel/3327-excel-convert-multiple-rows-to-columns.html
Este comentário foi feito pelo moderador no site
isso é apenas um clickbait para você baixar um software pago
Este comentário foi feito pelo moderador no site
O primeiro download será gratuito para uso em 60 dias, depois disso, você pode decidir pagar pelo uso ou não.
Este comentário foi feito pelo moderador no site
Olá, existe algum para converter os dados acima para o seguinte formulário?
1
A
Lilly
2
B
Namorada
...
Este comentário foi feito pelo moderador no site
Obrigado por sua mensagem deixando, este tutorial https://www.extendoffice.com/documents/excel/5401-excel-stack-columns-into-one-column.html
está falando sobre como resolver este problema, você pode ir para ver.
Este comentário foi feito pelo moderador no site
Tenho dados que terminam na mesma linha, mas várias colunas nas quais quero que sejam empilhadas em uma sequência em que os dados da coluna B vão para os dados da coluna A, onde os dados terminam para os dados da coluna A e da coluna C para ir para os dados da coluna A onde os dados da coluna B terminam e assim por diante. Dessa forma, terei dados de várias colunas para caber em uma coluna. Como eu posso fazer isso?
Este comentário foi feito pelo moderador no site
Oi, existe uma maneira de fazer a fórmula ignorar quaisquer células em branco que seus dados possam conter?


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


Estou usando uma planilha auxiliar para criar uma lista contígua para uma lista suspensa de validação de dados. Desde já, obrigado.
Este comentário foi feito pelo moderador no site
Desculpe, eu não sou bom em fórmulas, talvez você possa tentar usar Kutools para o utilitário Select Nonblank cells do Excel para selecionar as células não vazias primeiro e copiá-las e colá-las em outro local e usar os métodos acima.
Este comentário foi feito pelo moderador no site
Oi, eu estou olhando para ir um passo adiante com isso. Eu usei Stack Multiple Columns Into One With VBA, code e isso funciona. Eu usei Tables como fonte com este código e recebo a lista. Existe uma maneira de automatizar a execução da Macro? Para que quando eu adiciono uma nova entrada na tabela a Macro seja executada automaticamente e mantenha a lista resultante atualizada?
Este comentário foi feito pelo moderador no site
Oi, Chris Blackburn, desculpe, estou com medo de não encontrar um código que possa ser executado automaticamente para atualizar o resultado, talvez outra pessoa possa.
Este comentário foi feito pelo moderador no site
Estou tentando fazer isso em uma tabela muito grande (100s de colunas e linhas que estão todas vinculadas a fórmulas. Meu Excel continuará carregando e, finalmente, não responderá. Existe uma maneira de superar isso? Obrigado
Este comentário foi feito pelo moderador no site
Oi, Tom, qual método você aplica não funciona? O método três, ferramenta de faixa de transformação, deve funcionar.
Este comentário foi feito pelo moderador no site
Estou usando o método Stack Multiple Columns Into One With Formula e funcionou perfeitamente, mas quero que ele mantenha a formatação, ou seja, algumas colunas estavam em negrito e 1 era hiperlinks. Existe algo que pode ser adicionado à fórmula para que isso aconteça?
Este comentário foi feito pelo moderador no site
Oi, Susan Milard, a fórmula deles pode atender sua necessidade, você pode usar o VBA ou a ferramenta Transpose Range, ambos podem satisfazê-lo.
Este comentário foi feito pelo moderador no site
Muito obrigado, a opção de fórmula funcionou muito bem .. você salvou meu tempo.
Este comentário foi feito pelo moderador no site
Obrigado pela fórmula e VBA, mas nenhum deles faz o que o título do post diz. Eu estava esperando que eles empilhassem as colunas, mas em vez disso eles transpõem cada linha em uma coluna e as empilham ... então está empilhando linhas transpostas, não colunas. Ainda muito útil para alguns casos, mas alguém sabe como modificar a fórmula e/ou VBA para realmente empilhar as colunas? Suponho que eu poderia transpor todo o intervalo de entrada e usar esses ...
Este comentário foi feito pelo moderador no site
Para aqueles que procuram empilhar colunas em uma, mas não linhas em uma, você precisa ter uma visão clara do que você realmente quer fazer. Suponha que você tenha algum array 3x3, você quer que sua função index() obtenha entradas na forma de (linha,coluna) para (1,1), (2,1), (3,1), depois (1,2), (2,2), (3,2) e assim por diante. fazer é ter index() referindo-se a uma única coluna contendo todos os números de linha (1;2;3;1;2;3;1;2;3) e uma única coluna contendo todos os números de coluna (1;1 ;1;2;2;2;3;3;3).Para obter (1;2;3;1;2;3;1;2;3), uma abordagem de programação comum é usar 1+mod(some_counter -1,3) onde a função mod() fornece os resíduos 0,1,2,0,1,2,...
Para obter (1;1;1;2;2;2;3;3;3), usa-se 1+int((some_counter-1)/3) onde dá 1+0, 1+0, 1+0 , 1+1, 1+1, 1+1, 1+2, 1+2, 1+2
Portanto, para obter uma matriz 3x3 empilhada em uma, você usa a fórmula (pressione Ctrl +Shft + Enter):=index( $A$1:$C$3, 1+mod(row(A1)-1,3), 1 +int((linha(A1)-1)/3)))onde a linha(A1) serve como contador à medida que você preenche sua fórmula para baixo
Se você colocar ao contrário (linha para colunas, colunas para linha), você obterá linhas empilhadas em uma coluna=INDEX( $A$1:$C$3, 1+INT((ROW(A1)-1)/ 3),1+MOD(ROW(A1)-1,3)) que é essencialmente o que a fórmula deste artigo faz

Em poucas palavras, a fórmula usada para empilhar colunas em uma matriz em uma única coluna seria:=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)))
Não há comentários postados aqui ainda
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos

Siga-nos

Copyright © 2009 - www.extendoffice.com. | Todos os direitos reservados. Distribuído por ExtendOffice. | | | Mapa do site
Microsoft e o logotipo do Office são marcas comerciais ou marcas registradas da Microsoft Corporation nos Estados Unidos e / ou em outros países.
Protegido por Sectigo SSL