VBA Excel: A forma MAIS SIMPLES de encontre a Última Linha Preenchida em sua Planilha

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ม.ค. 2025

ความคิดเห็น • 4

  • @accesscontabil
    @accesscontabil 2 หลายเดือนก่อน +1

    muito bom! também pode usar o range("a1").end(xldown).row (se a coluna já estiver preenchida) Mas muito top a dica!

    • @excelincompany
      @excelincompany  2 หลายเดือนก่อน +1

      Sim @accesscontabil é possível sim. Inclusive, acredito que seja o código mais utilizado pelos usuários, mas o método countA é uma outra opção e com um comando mais curto. Abraços.

  • @legiaoanimes3074
    @legiaoanimes3074 ปีที่แล้ว +1

    alguem pode me ajudar com isso?
    basicamente quero selecionar dados das planilhas 1 e 2 e fazer uma tabela dinamica na planilha Gráficos
    Sub GerarRelatorio()
    Dim planilhaGraficos As Worksheet
    Dim planilha1 As Worksheet
    Dim planilha2 As Worksheet
    Dim ultimaLinhaPlanilha1 As Long
    Dim ultimaLinhaPlanilha2 As Long
    Dim ultimaLinhaPlanilhaGraficos As Long
    Dim tabela1 As PivotTable
    Dim tabela2 As PivotTable

    ' Definir as planilhas
    Set planilha1 = ThisWorkbook.Worksheets("Planilha1")
    Set planilha2 = ThisWorkbook.Worksheets("Planilha2")
    Set planilhaGraficos = ThisWorkbook.Worksheets("Gráficos")

    ' Obter a última linha das planilhas
    ultimaLinhaPlanilha1 = planilha1.Cells(Rows.Count, 1).End(xlUp).Row
    ultimaLinhaPlanilha2 = planilha2.Cells(Rows.Count, 1).End(xlUp).Row
    ultimaLinhaPlanilhaGraficos = planilhaGraficos.Cells(Rows.Count, 1).End(xlUp).Row

    ' Criar a tabela dinâmica1
    Set tabela1 = planilhaGraficos.PivotTables.Add(TableDestination:=planilhaGraficos.Range("A3"), TableName:="TabelaDadosDinâmica1")
    tabela1.SourceDataSheet = planilha1.Name
    tabela1.SourceData = planilha1.Range("A3:C" & ultimaLinhaPlanilha1).Address
    With tabela1
    .PivotFields("Consignataria").Orientation = xlRowField
    .PivotFields("Desconto").Orientation = xlDataField
    .AddDataField .PivotFields("Desconto"), "Soma de Descontos", xlSum
    .AddDataField .PivotFields("Desconto"), "Contagem de Descontos", xlCount
    .RowAxisLayout xlTabularRow
    .PivotFields("Consignataria").AutoSort xlAscending, "Consignataria"
    End With
    ' Criar a tabela dinâmica2
    Set tabela2 = planilhaGraficos.PivotTables.Add(TableDestination:=planilhaGraficos.Range("E3"), TableName:="TabelaDadosDinâmica2")
    tabela2.SourceDataSheet = planilha2.Name
    tabela2.SourceData = planilha2.Range("A3:C" & ultimaLinhaPlanilha2).Address
    With tabela2
    .PivotFields("Consignataria").Orientation = xlRowField
    .PivotFields("Vl Total Desconto").Orientation = xlDataField
    .AddDataField .PivotFields("Vl Total Desconto"), "Soma de Vl Total Desconto", xlSum
    .AddDataField .PivotFields("Vl Total Desconto"), "Contagem de Vl Total Desconto", xlCount
    .RowAxisLayout xlTabularRow
    .PivotFields("Consignataria").AutoSort xlAscending, "Consignataria"
    End With
    ' Formatar as tabelas dinâmicas
    planilhaGraficos.PivotTables("TabelaDadosDinâmica1").DataBodyRange.NumberFormat = "#,##0.00"
    planilhaGraficos.PivotTables("TabelaDadosDinâmica2").DataBodyRange.NumberFormat = "#,##0.00"
    ' Formatar as colunas J e K como porcentagem
    planilhaGraficos.Range("J3:J" & ultimaLinhaPlanilhaGraficos).NumberFormat = "0.00%"
    planilhaGraficos.Range("K3:K" & ultimaLinhaPlanilhaGraficos).NumberFormat = "0.00%"
    ' Alinhar o texto à esquerda
    planilhaGraficos.Range("A3:K" & ultimaLinhaPlanilhaGraficos).HorizontalAlignment = xlLeft
    ' AutoAjustar a largura das colunas
    planilhaGraficos.Columns.AutoFit
    MsgBox "Relatório gerado com sucesso!", vbInformation
    End Sub

    • @excelincompany
      @excelincompany  ปีที่แล้ว

      Olá legiaoanimes, a primeira coisa que você precisa verificar é se os objetos chamados no código existem, a saber:
      "Planilha1"
      "Planilha2"
      "Gráficos"
      Logo em seguida verificar se as suas tabelas de referencia começam na coluna 1 (coluna "A").
      Você precisa verificar estes pontos, pois é assim que estão fixados no código. Após verificar isso, caso após rodar o código ainda apresentar erro, aí é necessário depurar e ver onde está aparecendo o erro nos códigos.
      Forte abraço