muito bom! também pode usar o range("a1").end(xldown).row (se a coluna já estiver preenchida) Mas muito top a dica!
@legiaoanimes3074 Жыл бұрын
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 Жыл бұрын
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