Ir para conteúdo
Fórum Script Brasil
  • 0

Gerar Tabela dinâmica e selecionar até ultima linha


vbando

Pergunta

Boa tarde a todos!

Estou tentando desenvolver um código para exportar relatórios de forma automatizada e otimizar meu tempo no trabalho, porém estou com dificuldade em algumas etapas.

Vou colocar passo a passo qual é a minha intenção, para exemplificar melhor.

O que eu quero fazer?

1. Exportar o relatório do banco de dados (ok)

2. Deletar algumas colunas (ok)

3. Inserir fórmula Cont.ses e excluir linhas repetidas 

4. Selecionar intervalo e deixar apenas registros exclusivos

5. Gerar tabela dinâmica

6. Gerar gráfico dinâmico (ok)

7. Enviar resultado por email

 

Qual ponto está dando problema?

Na etapa 3 (Inserir fórmula Cont.ses e excluir linhas repetidas) o meu código apresenta o erro "Erro em tempo de execução 1004 o Objeto range global falhou".

Neste ponto, estou tentando inserir um código que seja capaz de varrer o meu arquivo e identificar qual a ultima linha das minhas duas primeiras colunas, adicionar a formula (cont.ses) à uma terceira coluna, aplicá-la para esta nova coluna inteira. Depois o meu código precisa selecionar o intervalo completo das três colunas e manter apenas os registros exclusivos.

Minha intenção é selecionar apenas os registros exclusivos para gerar um gráfico dinâmico (parte que estou conseguindo fazer).

 

Qual é o meu problema?

O problema é que preciso gerar um código que funcione para qualquer quantidade de linhas e intervalo que eu exporte (colunas não variam), pois como esse é um relatório de produção, ele sempre será variável. Consigo que o meu código identifique a ultima linha, mas não que depois selecione e aplique as formulas e gere a tabela pra qualquer intervalo que surja.

 

Alguma ajuda seria muito bem vinda, por favor.

Segue o código que estou tentando.

 

Sub Relatorio ()


Dim Caminho As String
Dim linha As Integer
Dim pergunta As Integer
Dim ult_lin As Long, ult_lin2 As Long
Dim intervalo As Range


pergunta = MsgBox("Deseja Exportar este Relatório?", vbYesNo)

 If pergunta = vbYes Then
 
 ' Abrir arquivo
    
    Caminho = ThisWorkbook.Path
    Workbooks.Open ("C:\Users\Usuários Convidados\Desktop\VBA\Testes\dadosbrutos")
    Sheets("Sheet").Select


Sheets("Sheet").Activate
    
 'Excluir colunas Macro

    Columns("C:E").Delete
      

 ' Adicionar formula contagem
 
    ult_lin = Range("A3").End(xlDown).Row 'encontrar ultima linha da coluna A
    ult_lin2 = Range("B3").End(xlDown).Row 'encontrar ultima linha da coluna B
    
    Range("C3").Value = "Contagem"
    Range("C4").Value = Application.WorksheetFunction.CountIfs(Range("A3:A"), Cells(ult_lin, 1).Value, Range("B3:B"), Cells(ult_lin2, 2).Value) 'AQUI APRESENTA O ERRO MENCIONADO
    Selection.AutoFill Destination:=Cells(ult_lin, 3)  'POSSÍVEL PONTO DE ERRO, POIS NÃO CONSIGO USAR ult_lin COM OBJETO RANGE.
    
 ' deixar somente registros exclusivos
 
    For Each cell In Worksheets("Sheet").Range("A1").CurrentRegion
    
        If Cells <> "" Then
        
        AdvancedFilter Action:=xlFilterInPlace, Unique:=True  'não sei qual range botar aqui no inicio para completar o comando a lado
        
        End If
        
    Next
    
End Sub

    

 

Muito obrigada!

 

 

Editado por vbando
errata
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...