Ir ao conteúdo
  • Cadastre-se

Copiar dados de várias tabelas usando macro


Ir à solução Resolvido por Visitante,

Posts recomendados

Boa tarde!

Estou tentando copiar dados de determinada referencia, que aparecem no meio de inumeras outras referencias em 12 diferentes planilhas, para uma nova planilha. No entanto quero apenas algumas linhas abaixo dessa referencia.

Por exemplo na plan1 (print1), para o produto 5678, quero copiar apenas as linhas que têm a data, ou seja, as linhas 19, 20 e 21, e colá-las numa nova planilha. Depois, a mesma macro localiza a mesma referencia na plan2, e copia as respetivas linhas de data (que podem ser mais ou menos de 3), e cola na planilha anterior por baixo do que colou antes...

 

No final, preciso obter algo como está aqui no print 2.

 

Espero que me possam ajudar, obrigado desde já!

 

post-730443-0-58564200-1405961119_thumb.

post-730443-0-07719500-1405961122_thumb.

Link para o comentário
Compartilhar em outros sites

Bom, não sei se é possível, mas uma sugestão que simplificaria tudo nas suas planilhas é mudar essa formatação complexa de se trabalhar, não é nem possível aplicar um filtro como ela está.

O ideal seria criar uma coluna com o número do pedido que seria repetido em toda as linhas com datas a que se refere.

Assim voce nao teria essas linhas em branco, nao teria essa linhas perdidas no meio dos dados "PRODUTO: X", repetição de nome das colunas, etc.

Não entendi mesmo o que voce precisa, voce quer copiar da planilha 1 para a planilha 2 todos as "datas" que se refiram a um número de pedido? Ou de todos os pedidos diferentes.

Link para o comentário
Compartilhar em outros sites

Já consegui com que fizesse o que queria!


No entanto, as referencias que tenho de procurar são 800 no meio de 15000... Eu tenho uma lista das 800 numa outra planilha..


Com este código a seguir ele localiza a referencia (tenho de a escrever, uma de cada vez), copia os dados e cola numa planilha que tenho de criar antes (AABB).. Dá para de alguma forma alterar o código e ele passar a ir buscar as 800 referências à outra planilha da lista, criar uma nova e colar depois tudo do mesmo jeito?


 


Sub Localizar()

    Pesquisa = InputBox("Pesquisar", "Pesquisar Valores")

    If Pesquisa = "" Then Exit Sub

    For Each plan In Worksheets

        Set x = plan.Cells.Find(what:=Pesquisa)

        If Not x Is Nothing Then

            firstAddress = x.Address

            Do

                plan.Select

                x.Select

                MsgBox "Texto encontrado na célula " & x.Address & Chr(10) & "Planilha: " & plan.Name & _

                  Chr(10) & "Texto: " & x.Text

                  ActiveCell.Offset(1, -1).Select

    Dim Cell As Range, Keyword$, N%, SearchAgain As VbMsgBoxResult

    Dim ass As Variant

    Dim Cellev As Range, prakash$, P%, SearchAgaina As VbMsgBoxResult

    Dim asa As Variant

 

 

StartSearch:

    N = 1

    Keyword = "Data"

 

    If Keyword = Empty Then GoTo StartSearch

    For Each Cell In Range(ActiveCell, ActiveCell.End(xlDown))

        If Cell Like "*" & Keyword & "*" Then

 

        ass = Cell.Address

 

        P = 1

        prakash = "Stock"

        If prakash = Empty Then GoTo StartSearch

            For Each Cellev In Range(ActiveCell, ActiveCell.End(xlDown))

                If Cellev Like "*" & prakash & "*" Then

                    asa = Cellev.Address

 

                    Range(asa, ass).Select

                    Range(Selection, Selection.End(xlToRight)).Select

                    Range(Selection, Selection.End(xlToRight)).Select

                    Range(Selection, Selection.End(xlToRight)).Select

                    Range(Selection, Selection.End(xlToRight)).Select

                    Range(Selection, Selection.End(xlToRight)).Select

                    Range(Selection, Selection.End(xlToRight)).Select

                    Range(Selection, Selection.End(xlToRight)).Select

                    Range(Selection, Selection.End(xlToRight)).Select

                    Selection.Copy

                    

                    

                    

                                  Sheets("AABB").Select

                    Range("A1").Select

                    Do

                    If ActiveCell <> "" Then

                    ActiveCell.Offset(1, 0).Select

                    End If

                    Loop Until ActiveCell = ""

                    ActiveCell.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

                    False, Transpose:=False

                    Application.CutCopyMode = False

                             

                    Worksheets("Folha1").Select

                    P = P + 1

                End If

            Next Cellev

            N = N + 1

        End If

    Next

                    Set x = plan.Cells.FindNext(x)

            Loop While Not x Is Nothing And x.Address <> firstAddress

        Else

            MsgBox "Texto não encontrado na planilha " & plan.Name

        End If

        Next

               

  

End Sub

Link para o comentário
Compartilhar em outros sites

Boa tarde!

Tenho uma planilha com várias folhas. Numa dessas folhas tenho uma lista de referencias.

O que pretendo fazer, é uma macro que vá localize as referencias dessa lista, uma a uma, em todas as outras folhas, e depois copie determinados dados abaixo dessa.

É possível isso?

Link para o comentário
Compartilhar em outros sites

  • Solução

considerei que no seu arquivo existe:
1. uma planilha em branco de nome "resumo" (sem as aspas)
2. uma planilha de nome "ref" (idem) com a listagem das referências em coluna, a partir de "A1"

Rode o código a partir da planilha "resumo". O código irá colocar os resultados da busca nessa planilha.

Se o código travar ou o resultado obtido não for o resultado esperado, sugiro que você disponibilize uma amostra do arquivo com as explicações na própria planilha.

Para facilitar carregue o arquivo comprimido direto aqui no fórum ao invés de colocá-lo em algum site.

 

Sub BuscaReferências()  Dim LRd As Long, x As Long, wsOr As Worksheet, wsDe As Worksheet, rng As Range, mycel, myref As Range    Set wsDe = Sheets("resumo")    Set rng = Sheets("ref").Range("A1", Sheets("ref").Cells(Rows.Count, 1).End(xlUp))            For Each mycel In rng        With wsDe          LRd = .Cells(Rows.Count, 2).End(xlUp).Row          .Cells(LRd + 2, 2) = mycel.Value                        For Each wsOr In ThisWorkbook.Worksheets              If wsOr.Name <> "resumo" And wsOr.Name <> "ref" Then                Set myref = wsOr.[B:B].Find(mycel.Value)                  If Not myref Is Nothing Then                    x = myref.Offset(4).End(xlDown).Row - myref.Offset(4).Row + 1                    LRd = .Cells(Rows.Count, 2).End(xlUp).Row                    .Cells(LRd + 2, 1).Resize(x, 8).Value = myref.Offset(4, -1).Resize(x, 8).Value                    .Cells(LRd + 2, 9) = wsOr.Name                  End If              End If            Next wsOr                    End With      Next mycelEnd Sub
Link para o comentário
Compartilhar em outros sites

Marcos,

 

voce tem postado diversas vezes, nem sempre especificando direito o que precisa,  entenda que a coisa não é tão simples como parece pela sua pergunta.

 

Que referencias sao essas, que listas sao essas, que determinados dados sao esses, abaixo do que vai colar?

 

O excel é uma ferramenta matematica, todos programas precisam de ordens exatas e logicas: procurar dado tal na coluna tal, copiar se for igual a x ou y para a planilha 2 coluna c linha d.

 

se não há uma lógica matemática, se sua planilha cada coisa esta em um lugar fora de ordem ou tem que ser colado para lugares que nao obedecem uma regra lógica, voce nao vai conseguir fazer a macro, ou vai ter que criar uma linha de codigo para cada dado que quiser copiar e colar.

 

de preferência disponibilize sua planilha inteira para que alguem que tenha possibilidade possa ve-la e ver se da pra fazer o que você quer.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...