Skip to content
AMDS Logo AMDS Logo
  • Home
  • Produtos e Soluções
    • Suporte Remoto
    • Suporte Área Jurídica
  • Serviços
  • Sobre
  • Contato
+ 55 11 9 9764 8700
contato@amds.com.br

Função para dividir tabela em planilhas no Excel

  1. Home
  2. Dicas
  3. Função para dividir tabela em planilhas no Excel

Função para dividir tabela em planilhas no Excel

Para criar uma nova função, que quebra 1 tabela (planilha, sheet) em várias (sheets) no Excel, pressione em seu teclado ALT + F11.
Surgirá uma nova janela (editor Visual Basic). No menu  acesse INSERIR/MÓDULO, e cole o texto abaixo:

Sub parse_data()
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim icol As Long
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer

    'This macro splits data into multiple worksheets based on the variables on a column found in Excel.
    'An InputBox asks you which columns you'd like to filter by, and it just creates these worksheets.

    Application.ScreenUpdating = False
    vcol = Application.InputBox(prompt:="Which column would you like to filter by?", title:="Filter column", Default:="3", Type:=1)
    Set ws = ActiveSheet
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = "A1"
    titlerow = ws.Range(title).Cells(1).Row
    icol = ws.Columns.Count
    ws.Cells(1, icol) = "Unique"
    For i = 2 To lr
        On Error Resume Next
        If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
            ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
        End If
    Next

    myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
    ws.Columns(icol).Clear

    For i = 2 To UBound(myarr)
        ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
        If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
            Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
        Else
            Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
        End If
        ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
        Sheets(myarr(i) & "").Columns.AutoFit
    Next

    ws.AutoFilterMode = False
    ws.Activate
    Application.ScreenUpdating = True
End Sub

Após isso volte para a janela do Excel.

Execute a macro parse_data() e provavelmente escolha a coluna 1, e mande executar.

Sua planilha será dividida em várias (dentro do mesmo arquivo).

Inscrições Abertas – Curso de Excel
admin2021-12-10T22:54:06-03:00



© Copyright 2009 -    |  AMDS Soluções em Informática Ltda.
Page load link
Go to Top