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