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

Como criar novas planilhas para cada linha do Excel?

Supondo que você tenha uma tabela de pontuação com o nome de todos os alunos na coluna A. Agora você deseja criar novas planilhas com base nesses nomes na coluna A e fazer com que cada planilha contenha os dados de um aluno exclusivo. Ou apenas crie uma nova planilha para apenas cada linha da tabela sem considerar os nomes na coluna A. Neste vídeo, você obterá métodos para alcançá-lo.

Crie novas planilhas para cada linha com o código VBA
Crie novas planilhas para cada linha com o utilitário Dividir Dados do Kutools para Excel


Crie novas planilhas para cada linha com o código VBA

Com os códigos a seguir, você pode criar uma nova planilha com base nos valores das colunas ou apenas criar novas planilhas para cada linha no Excel.

1. Pressione outro + F11 simultaneamente para abrir o Microsoft Visual Basic para Aplicações janela.

2. No Microsoft Visual Basic para Aplicações janela, clique em inserção > Módulo. E, em seguida, cole o seguinte código no Módulo janela.

Código VBA: crie uma nova planilha para cada linha com base na coluna

Sub parse_data()
'Update by Extendoffice 2018/3/2
    Dim xRCount As Long
    Dim xSht As Worksheet
    Dim xNSht As Worksheet
    Dim I As Long
    Dim xTRrow As Integer
    Dim xCol As New Collection
    Dim xTitle As String
    Dim xSUpdate As Boolean
    Set xSht = ActiveSheet
    On Error Resume Next
    xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Row
    xTitle = "A1:C1"
    xTRrow = xSht.Range(xTitle).Cells(1).Row
    For I = 2 To xRCount
        Call xCol.Add(xSht.Cells(I, 1).Text, xSht.Cells(I, 1).Text)
    Next
    xSUpdate = Application.ScreenUpdating
    Application.ScreenUpdating = False
    For I = 1 To xCol.Count
        Call xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
        Set xNSht = Nothing
        Set xNSht = Worksheets(CStr(xCol.Item(I)))
        If xNSht Is Nothing Then
            Set xNSht = Worksheets.Add(, Sheets(Sheets.Count))
            xNSht.Name = CStr(xCol.Item(I))
        Else
            xNSht.Move , Sheets(Sheets.Count)
        End If
        xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
        xNSht.Columns.AutoFit
    Next
    xSht.AutoFilterMode = False
    xSht.Activate
    Application.ScreenUpdating = xSUpdate
End Sub

Nota: A1: C1 é o intervalo de títulos de sua tabela. Você pode alterá-lo com base em suas necessidades.

3. Pressione F5 chave para executar o código, então novas planilhas são criadas após todas as planilhas da pasta de trabalho atual, conforme a captura de tela abaixo:

Se quiser criar novas planilhas diretamente para cada linha sem considerar o valor da coluna, você pode usar o código a seguir.

Código VBA: crie diretamente uma nova planilha para cada linha

Sub RowToSheet()
	Dim xRow As Long
	Dim I As Long
	With ActiveSheet
		xRow = .Range("A" & Rows.Count).End(xlUp).Row
		For I = 1 To xRow
			Worksheets.Add(, Sheets(Sheets.Count)).Name = "Row " & I
			.Rows(I).Copy Sheets("Row " & I).Range("A1")
		Next I
	End With
End Sub

Depois de executar o código, cada linha da planilha ativa será colocada em uma nova planilha.

Nota: A linha de título também será colocada em uma nova planilha com este código VBA.


Crie novas planilhas para cada linha com o utilitário Dividir Dados do Kutools para Excel

Na verdade, o método acima é complicado e difícil de entender. Nesta seção, apresentamos a você o Dividir Dados utilidade de Kutools for Excel.

Antes de aplicar Kutools for Excel, Por favor baixe e instale primeiro.

1. Selecione a tabela que você precisa usar para criar novas planilhas e clique em Kutools Plus> Dados de cuspir. Veja a imagem:

2. No Divida os dados em várias planilhas caixa de diálogo, faça o seguinte.

A. Para criar novas planilhas com base no valor da coluna:

1). Selecione o Coluna específica opção e especifique uma coluna na qual deseja dividir os dados com base na lista suspensa;
2). Se você deseja nomear as planilhas com valores de coluna, selecione Valores da coluna no Regras lista suspensa;
3). Clique no OK botão. Veja a imagem:

B. Para criar diretamente novas planilhas para cada linha:

1). Selecione Linhas fixas opção, insira o número 1 na caixa;
2). Selecione Números de linha de Regras lista suspensa;
3). Clique no OK botão. Veja a imagem:

uma nova pasta de trabalho é criada com todas as novas planilhas dentro. Veja as imagens abaixo.

Criação de novas planilhas para cada linha com base no valor da coluna:

Criação de uma nova planilha para cada linha sem considerar o valor da coluna:

  Se você quiser ter uma avaliação gratuita (30-dia) deste utilitário, por favor clique para fazer o downloade, em seguida, aplique a operação de acordo com as etapas acima.

Crie novas planilhas para cada linha com o utilitário Dividir Dados do Kutools para Excel


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 (33)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Oi, eu quero criar planilhas com base no meu arquivo de modelo Myformat e nomeá-los de acordo com os dados da primeira coluna. Eu personalizei o código VBA da seguinte forma, mas está gerando muitas folhas em branco. Você poderia por favor me ajudar a parar de gerar folhas em branco. Obrigada. Kumar Sub AddSheets() Dim cell As Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Definir wsWithSheetNames = ActiveSheet Definir wbToAddSheetsTo = ActiveWorkbook para cada célula Em wsWithSheetNames.Range("A2:A165") Com wbToAddSheetsTo .Sheets. Adicionar após:=ActiveSheet Sheets.Add Type:= _ "C:\Users\Dimple\AppData\Roaming\Microsoft\Templates\MyFormat.xltx" Em erro Continuar próximo ActiveSheet.Name = cell.Value If Err.Number = 1004 Then Debug.Print cell.Value & "já usado como um nome de planilha" End If On Error GoTo 0 End With Next cell End Sub
Este comentário foi feito pelo moderador no site
Oi,
Eu sempre recebo 2 folhas por entrada única na linha A. Alguma ideia do porquê? Além disso, quão difícil seria preceder a quantidade total de linhas que a planilha gerada cria para o nome da planilha. Muito obrigado! Deixe-me saber se você aceita doações.
Este comentário foi feito pelo moderador no site
Olá, quero usar meu modelo de arquivo exel MyFormat para gerar planilhas e nomear as planilhas pelos dados da primeira coluna. O código VBA a seguir está funcionando bem para gerar as planilhas conforme MyFormat. Mas também está gerando centenas de folhas em branco no excel templete normal. Alguém poderia me ajudar a parar de gerar excesso de folhas em branco. Obrigado Kumar Sub AddSheets() Dim cell As Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook Para cada célula Em wsWithSheetNames.Range("A2:A165") Com wbToAddSheetsTo .Sheets .Add After:=ActiveSheet Sheets.Add Type:= _ "C:\Users\Dreamline\AppData\Roaming\Microsoft\Templates\MyFormat.xltx" Em Erro Continuar Próximo ActiveSheet.Name = cell.Value If Err.Number = 1004 Então Debug.Print cell.Value & "já usado como um nome de planilha" End If On Error GoTo 0 End With Next cell End Sub
Este comentário foi feito pelo moderador no site
Os nomes das planilhas devem ter menos ou igual a trinta caracteres.
Não é um conhecimento muito comum, mas, caso contrário, o código produzirá uma planilha padrão "Planilha #" em branco.

Crie uma nova planilha na qual seu código de análise será executado e faça referência à primeira coluna da seguinte maneira:
=IF(OR('Original Referenciado'!B1<>"", LEN('Original Referenciado'!B1)>30), LEFT('Original Referenciado'!B1,30),'Original Referenciado'!B1)


Copie ou faça referência ao restante da folha, conforme desejar. Certifique-se de que a coluna esteja livre de restrições de validação de dados se você tiver algum problema ao fazer referência à outra planilha.
Este comentário foi feito pelo moderador no site
Muito obrigado por publicar isto!!!! Funcionou como um encanto. Você pode explicar como o primeiro conjunto de código funciona?
Este comentário foi feito pelo moderador no site
Obrigado por isso!



No código VBA, existe alguma maneira de nomear as planilhas resultantes dos dados da primeira e da segunda coluna combinados?



então, para o seu exemplo, a planilha 2 seria chamada automaticamente de "linda 100"
Este comentário foi feito pelo moderador no site
Cara Joyce,
Obrigado pelo seu comentário! Espero que o script VBA abaixo possa ajudá-lo.

Subparse_data()
Escurecer xRCount enquanto
Dim xSht As Planilha
Dim xNSht como planilha
Escurecer eu enquanto
Dim xTRrow como inteiro
Dim xCol como nova coleção
Dim xTitle As String
On Error Resume Next
Application.ScreenUpdating = False
Definir xSht = ActiveSheet
xRCount = xSht.UsedRange.End(xlDown).Row
xTitulo = "A1:B1"
xTRrow = xSht.Range(xTitle).Row
Para I = 2 Para xRCount
Chame xCol.Add(CStr(xSht.Cells(I, 1)), CStr(xSht.Cells(I, 1)))
Seguinte
Debug.Print xCol.Count
Para I = 1 Para xCol.Count
Chame xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
Definir xNSht = Nada
Definir xNSht = Planilhas(CStr(xCol.Item(I))))
Se xNSht não é nada, então
Definir xNSht = Worksheets.Add(, Sheets(Sheets.Count))
xNSht.Name = CStr(xCol.Item(I) & xSht.Cells(I + 1, 2))
Outro
xNSht.Move , Sheets(Sheets.Count)
Se acabar
xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
xNSht.Columns.AutoFit
Seguinte
xSht.AutoFilterMode = Falso
xSht.Ativar
Application.ScreenUpdating = True
End Sub
Este comentário foi feito pelo moderador no site
Isso foi extremamente útil, exatamente o que eu estava procurando. Obrigado!
Este comentário foi feito pelo moderador no site
Este código é muito útil, e quase o que eu estava procurando.
Mas pode ser ajustado de modo que haja duas folhas -
A Planilha 1 é os Dados - uma tabela de dados com a Coluna A sendo o nome
A planilha 2 é um modelo, com vários campos que exigem preenchimento
O que eu esperava é executar uma macro, que
1 Copie e cole o modelo, no mesmo arquivo, nomeie a planilha como o nome na Célula A1
2 Copie a célula B1 e passe para um campo selecionado no novo modelo
3 repetir ao longo da carreira 1 até esvaziar
4, em seguida, repita para a linha 2 e cada linha até o final.
O resultado é um arquivo com x no. planilhas todas iguais ao modelo, com todos os campos preenchidos.
Herdei um arquivo que funciona de outra forma, extraindo dados de templates para uma tabela, mas não consigo reverter.....
Este comentário foi feito pelo moderador no site
Caro sam,
Seria bom se você pudesse anexar sua pasta de trabalho aqui.
Você pode enviar seu arquivo com o botão Carregar arquivos abaixo.
Este comentário foi feito pelo moderador no site
Olá, tentei usar seu código, mas recebo um erro
Erro de tempo de execução '1004':
Erro definido pelo aplicativo ou definido pelo objeto
Eu não tenho conhecimento de VBA (ou qualquer tecnologia para esse assunto), mas se uma depuração de imprensa destaca a linha 11 xRCount=xSht.Cells(xSht.Rows.Count,1). Fim(xIUp).Linha
Estou trabalhando com um arquivo grande que possui 127 colunas e 337 linhas (as linhas variam, as colunas não) e é uma lista com números de Id e seus detalhes.
Eu alterei o intervalo como você observou, mas ainda não funciona Estou usando o Excel 2010, você poderia me dizer como fazê-lo funcionar, se possível
Obrigado
Este comentário foi feito pelo moderador no site
Prezada Beatriz,
O código é atualizado com a resolução do problema. Por favor, tente novamente. Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Olá, acho que tem algo útil aqui para minha situação, mas estou conseguindo fazer VBA ou script, espero que possa ajudar.
Eu tenho um modelo com muitas células para preencher com dados, e haverá uma chave de pesquisa (não exclusiva) que eu gostaria de inserir no modelo. Com base na chave de pesquisa, os dados são pesquisados ​​e os dados correspondentes na chave correspondente são buscados e preenchidos no modelo. O modelo preenchido é salvo em uma nova planilha. Talvez haja mais de 1 entradas de correspondência. Eu preciso que o script continue pesquisando na lista, até que todas as correspondências sejam escolhidas e o número certo de novas planilhas criadas.
Este comentário foi feito pelo moderador no site
Oi, existe uma maneira de manter a linha de título em cada nova planilha? (circulado em vermelho no meu anexo)

O código pega todas as linhas da minha planilha mestre e as transfere para novas planilhas, o que é ótimo. Mas eu quero manter meu valor de cabeçalho "mestre" (circulado em vermelho) na parte superior de cada nova planilha. Obrigado!



Estou me referindo a este código acima:

Sub RowToSheet()
Dim xRow por muito tempo
Escurecer eu enquanto
Com ActiveSheet
xLinha = .Range("A" & Rows.Count).End(xlUp).Linha
Para I = 1 Para xLinha
Worksheets.Add(, Sheets(Sheets.Count)).Name = "Linha " & I
.Linhas(I).Copy Sheets("Linha " & I).Range("A1")
Proximo eu
Terminar com
End Sub
Este comentário foi feito pelo moderador no site
Ótimo código, mas posso obter ajuda se meus dados estiverem na coluna G em vez da coluna A? o que preciso mudar para ter os dados da Coluna G em outra aba?

obrigado
Este comentário foi feito pelo moderador no site
Este é um ótimo código. Muito obrigado às caixas de cérebro no OfficeExtend !! Existe alguma maneira este código pode ser ligeiramente adaptado para criar folhas separadas para cada *coluna* em vez de linha? Anexei uma imagem do que estou tentando alcançar. Isso é possível? Atenciosamente.
Este comentário foi feito pelo moderador no site
Bom dia,
Não vi sua foto aqui.
Este comentário foi feito pelo moderador no site
Oi, como modificar o código, caso meu campo de nome esteja na coluna C
Este comentário foi feito pelo moderador no site
Olá Abdul Basit,
O código VBA abaixo pode ajudá-lo. Por favor, tente.
Na linha: xCName = "3", 3 indica o número da coluna (aqui está a coluna C) no Excel. Você pode alterá-lo para qualquer número de coluna conforme necessário.

Subparse_data()
'Atualizar por Extendoffice 2018/3/2
Escurecer xRCount enquanto
Dim xSht As Planilha
Dim xNSht como planilha
Escurecer eu enquanto
Dim xTRrow como inteiro
Dim xCol como nova coleção
Dim xTitle As String
Dim xSupdate As Boolean
Dim xCName como inteiro
Dim xTA, xRA, xSRg1 como string
Definir xSht = ActiveSheet
On Error Resume Next
xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Row
xTitulo = "A1:C1"
xCName = "3" 'Mude este número para o número da coluna na qual você criará novas planilhas com base
xTRrow = xSht.Range(xTitle).Cells(1).Row
Para I = 2 Para xRCount
Chame xCol.Add(xSht.Cells(I, xCName).Text, xSht.Cells(I, xCName).Text)
Seguinte
xSUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
xSRg = xSht.Cells(1, xCName).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Para I = 1 Para xCol.Count
Chame xSht.Range(xTitle).AutoFilter(xCName, CStr(xCol.Item(I)))
Definir xNSht = Nada
Definir xNSht = Planilhas(CStr(xCol.Item(I))))
Se xNSht não é nada, então
Definir xNSht = Worksheets.Add(, Sheets(Sheets.Count))
xNSht.Name = CStr(xCol.Item(I))
Outro
xNSht.Move , Sheets(Sheets.Count)
Se acabar
xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
xNSht.Columns.AutoFit
Seguinte
xSht.AutoFilterMode = Falso
xSht.Ativar
Application.ScreenUpdating = xSUpdate
End Sub
Este comentário foi feito pelo moderador no site
Código VBA legal para fazer o truque.

Como posso modificá-lo para não copiar a primeira coluna? E para remover o nome da coluna?

Saudações
Este comentário foi feito pelo moderador no site
Por favor, posso obter ajuda sobre como nomear automaticamente as planilhas usando uma coluna específica. Isso é para o VBA de linha para folha. Ver abaixo

Sub RowToSheet()

Dim xRow por muito tempo

Escurecer eu enquanto

Com ActiveSheet

xLinha = .Range("A" & Rows.Count).End(xlUp).Linha

Para I = 1 Para xLinha

Worksheets.Add(, Sheets(Sheets.Count)).Name = "Linha " & I

.Linhas(I).Copy Sheets("Linha " & I).Range("A1")

Proximo eu

Terminar com

End Sub
Este comentário foi feito pelo moderador no site
Esquece que eram espaços escondidos à direita. Eu usei o recurso TRIM e limpei. Ter uma contagem de linhas (contagem de linhas realmente para que as linhas -1 anexadas à planilha sejam incríveis)
Este comentário foi feito pelo moderador no site
Como referenciar o uso do código acima (crédito) ? É possível modificar o código?
Este comentário foi feito pelo moderador no site
Olá, esta é uma plataforma de comunicação aberta. O código tem permissão para fazer referência e modificar.
Este comentário foi feito pelo moderador no site
Nana
86
2
Este comentário foi feito pelo moderador no site
Olá! Acabei de usar este código e funcionou! Além de criar uma nova planilha para cada entrada, quero transpô-la para colunas e não consigo descobrir. Então, para o exemplo acima, a saída para Nana ficaria assim - Nome NanaContagem 86Não. 2
Este comentário foi feito pelo moderador no site
Olá, usei este código e funcionou, mas se eu quiser selecionar mais de uma linha no cabeçalho, o que vai mudar no código? Eu tenho várias linhas na folha que eu quero em cada folha.
Este comentário foi feito pelo moderador no site
Olá, você descobriu como?
Este comentário foi feito pelo moderador no site
Oi, existe um código que adicionaria apenas 1 nova planilha cada vez que a macro for executada, por exemplo, 1ª vez a nova planilha seria nomeada no conteúdo da célula A1, 2ª vez que a macro fosse executada a nova planilha seria nomeada no conteúdo de A2 etc. obrigado antecipadamente
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