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

Como duplicar linhas com base no valor da célula em uma coluna?

Por exemplo, tenho um intervalo de dados que contém uma lista de números na coluna D e, agora, quero duplicar as linhas inteiras várias vezes com base nos valores numéricos da coluna D para obter o seguinte resultado. Como posso copiar as linhas várias vezes com base nos valores das células no Excel?

doc linhas duplicadas por célula 1

Duplique as linhas várias vezes com base nos valores das células com código VBA


seta azul bolha direita Duplique as linhas várias vezes com base nos valores das células com código VBA

Para copiar e duplicar as linhas inteiras várias vezes com base nos valores das células, o seguinte código VBA pode ajudá-lo, faça o seguinte:

1. Segure o ALT + F11 chaves para abrir o Microsoft Visual Basic para Aplicações janela.

2. Clique inserção > Móduloe cole o seguinte código no Módulo Janela.

Código VBA: linhas duplicadas várias vezes com base no valor da célula:

Sub CopyData()
'Updateby Extendoffice
    Dim xRow As Long
    Dim VInSertNum As Variant
    xRow = 1
    Application.ScreenUpdating = False
    Do While (Cells(xRow, "A") <> "")
        VInSertNum = Cells(xRow, "D")
        If ((VInSertNum > 1) And IsNumeric(VInSertNum)) Then
           Range(Cells(xRow, "A"), Cells(xRow, "D")).Copy
           Range(Cells(xRow + 1, "A"), Cells(xRow + VInSertNum - 1, "D")).Select
           Selection.Insert Shift:=xlDown
           xRow = xRow + VInSertNum - 1
        End If
        xRow = xRow + 1
    Loop
    Application.ScreenUpdating = False
End Sub

3. Então aperte F5 chave para executar este código, todas as linhas foram duplicadas várias vezes com base no valor da célula na coluna D conforme necessário.

Nota: No código acima, a letra A indica a coluna inicial do seu intervalo de dados e a letra D é a letra da coluna na qual você deseja duplicar as linhas. Altere-os de acordo com sua necessidade.


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 (41)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Isso funcionou perfeitamente. O que eu adicionaria ao seu código para fazer desaparecer qualquer linha com '0'? Estamos usando isso para rótulos de SKU. Obrigado pela ótima solução!
Este comentário foi feito pelo moderador no site
Eu te amo. Obrigada.
Este comentário foi feito pelo moderador no site
Obrigada! as linhas 10 e 11 "D" indicam o final da linha e isso pode precisar ser alterado para seu intervalo de dados para que funcione.
Este comentário foi feito pelo moderador no site
Oi,
Alguém sabe converter esse código VBA para scripts do Google Apps (Google Sheets)?
Este comentário foi feito pelo moderador no site
Eu usei o código acima, que funciona muito bem, mas preciso de mais uma etapa depois que a linha for colada. Só não consigo fazer funcionar direito. Eu preciso que coloque zero na coluna "N" na linha depois de colada, mas mantenha o valor em "N" na linha copiada original.


Sub CopyData ()
'Atualizar por Extendoffice 20160922
Dim xRow por muito tempo
Dim VInSertNum como variante
xLinha = 1
Application.ScreenUpdating = False
Do While (Cells(xRow, "A") <> "")
VInSertNum = Cells(xRow, "J")
Se ((VInSertNum > 1) E IsNumeric(VInSertNum)) Então
Range(Cells(xRow, "A"), Cells(xRow, "AN")).Copiar
' Cells(xRow, 14).Value = 0 isso fez todas as linhas
Range(Cells(xRow + 1, "A"), Cells(xRow + VInSertNum - 1, "AN")). Selecione
'Células(xLinha, 14).Valor = 0
'isso fez todas as linhas
Selection.Insert Shift: = xlDown
' Cells(xRow, 14).Value = 0 isso fez apenas a primeira linha
xLinha = xLinha + VInSertNum - 1
'Células(xLinha - 1, 14).Valor = 0
Se acabar
' Células(xLinha - 1, 14).Valor = 0
xLinha = xLinha + 1
' Células(xLinha + 1, 14).Valor = 0
laço
'Cells(xRow, 14).Value = 0 isso não fez nenhuma linha
Application.ScreenUpdating = False
End Sub
Este comentário foi feito pelo moderador no site
Oi Steve, você foi capaz de fazer isso. minha necessidade é a mesma :(
Este comentário foi feito pelo moderador no site
Olá, pessoal,
Talvez o artigo abaixo possa ajudá-lo, por favor verifique:
https://www.extendoffice.com/documents/excel/3682-excel-copy-and-insert-row-multiple-times.html
Este comentário foi feito pelo moderador no site
Você sabe qual seria o código para duplicar a linha apenas uma vez, com base em se dizer que a célula d contém 'Sim' - eu tenho perseguido um código semelhante, mas para algo que duplicará uma linha com base em uma célula dizendo sim
Este comentário foi feito pelo moderador no site
Então, estou usando este código, mas quero que ele pesquise todo o documento, não apenas a linha 1 ou o que for indicado por xRow = 1. Estou tentando colocar no intervalo 1:2000, mas não está funcionando. Como posso identificar xRow = qualquer linha na planilha que inclua as informações que identifico no código abaixo?


Dim xRow por muito tempo
Valor dim como variante


xLinha = 1: 2000

Application.ScreenUpdating = False
Do While (Cells(xRow, "A") <> "")
Valor = Células(xLinha, "D")
Valor2 = Células(xLinha, "A")
Se Não ((Value = "allegheny general") E IsNumeric(Value2 = G0202)) Então
Range(Cells(xRow, "A"), Cells(xRow, "D")). Copiar
Range(Cells(xRow + 1, "A"), Cells(xRow + 1, "D")).
Selection.Insert Shift: = xlDown
xLinha = xLinha + 1
Se acabar
xLinha = xLinha + 1
laço
Application.ScreenUpdating = False
End Sub
Este comentário foi feito pelo moderador no site
Olá, isso funcionou muito bem. No entanto, tenho um relatório com 1000 entradas e o código parou de duplicar em torno da entrada 480. Há algo que eu possa adicionar para que complete a ação em todo o relatório?
Este comentário foi feito pelo moderador no site
Olá, Lia,
Eu testei o código em 2000 linhas e funciona bem.
Você poderia me enviar sua planilha para testar o código?
Meu endereço de e-mail é skyyang@extendoffice.com
Aguardamos a sua resposta!
Este comentário foi feito pelo moderador no site
Olá! Eu tenho que trabalhar. Foi um erro do meu lado, o relatório tinha algumas linhas em branco que estavam ocultas que estavam fazendo com que o script parasse de fazer loop. Funcionou para o meu relatório com 8,000 linhas! Obrigado Q
Este comentário foi feito pelo moderador no site
Olá Leah e Skyyang,
Estou tendo um problema semelhante - o script funciona bem em uma planilha de cerca de 100 linhas, mas para de funcionar para algo maior. Verifiquei se há linhas em branco na coluna de onde vem o número de multiplicação e não há nenhuma. Algum outro motivo pelo qual o script pode não funcionar para conjuntos de dados maiores?
Este comentário foi feito pelo moderador no site
Obrigado! tem sido uma ótima solução para todos os meus problemas!
Este comentário foi feito pelo moderador no site
Este script parece ser exatamente o que eu preciso, porém, ao executá-lo estou recebendo um erro na linha Selection.Insert Shift:=x1Down

Alguma sugestão sobre como corrigir isso?
Este comentário foi feito pelo moderador no site
oi, para mim não está funcionando, quero remover letras e número duplicado é possível?
Este comentário foi feito pelo moderador no site
Existe uma maneira de atualizar o módulo para duplicar apenas novos dados? Estou trabalhando em um documento em andamento e não quero que o código duplique dados que foram duplicados anteriormente.
Este comentário foi feito pelo moderador no site
existe alguma maneira de adicionarmos a cada célula repetida, caracteres consecutivos? exemplo
KTE+0001

KTE+0002
Este comentário foi feito pelo moderador no site
Amável! Obrigada. Gostaria de saber se alguém poderia dar uma dica de como eu incorporaria uma nova coluna de informações na tabela (coluna E) que é um número de incremento de valor para cada linha copiada, 1, 2, 3, 4 etc... e depois quando chegar ao próximo item a ser duplicado X vezes, ele começará a numerar novamente a partir de 1 e aumentará em 1 a cada vez.
Este comentário foi feito pelo moderador no site
Oi, eu tentei isso, mas existe uma maneira de considerar se existem vários critérios com os dados que estou duplicando
Este comentário foi feito pelo moderador no site
Oi,

estou criando uma planilha usando a fórmula fornecida, mas estou tendo erros. por favor, alguém pode me dizer qual deve ser a minha fórmula?

minha tabela é de AY com as quantidades em K.
Este comentário foi feito pelo moderador no site
Olá, tenho tentado ajustar este código mas tendo dificuldades.
eu tenho itens de estoque. cada item tem duas linhas e deseja que elas sejam duplicadas N número de vezes
no topo da planilha, tenho uma célula vamos chamá-la de A1, tenho quantas vezes sendo duplicada? N
seja qual for o valor N, eu quero duplicar o item de estoque inicial que tenho (A16, A17) tantas vezes.
então o item copiado deve começar em A18 (e são duas linhas, o próximo item a20 etc.
obrigado
Este comentário foi feito pelo moderador no site
Olá, o código funciona muito bem. Eu também queria adicionar +1 à data (somente dias da semana) toda vez que a linha fosse duplicada.
Este comentário foi feito pelo moderador no site
Muito obrigado! Isso me economizou tanto tempo que costumava desperdiçar copiando e colando todas as minhas linhas de dados.
Dois polegares para cima!!
Este comentário foi feito pelo moderador no site
Ótimo código!!! Obrigada!!!
Não há comentários postados aqui ainda
carregar mais
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