Jump to content
Fórum Script Brasil
  • 0

Gerar Tabela dinâmica e selecionar até ultima linha


Question

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!

 

 

Edited by vbando
errata
Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148688
    • Total Posts
      644522
×
×
  • Create New...