Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#8923
Prezados,

Estou com um pequeno problema e peço a ajuda de vocês!

Tenho 1 planilha principal chamada Principal e 3 planilhas filhas chamadas Filha1, Filha2 e Filha3.

Todo dia pela manha 3 pessoas copiam a Principal e renomeiam para Filha1, Filha2 e Filhas3.

As planilhas "filhas" começam a ter atualização em varias linhas na mesma coluna seguindo o padrão de separação com ";"
Exemplo:

Principal: celula A1 -> LM1;LM2;LM3
Filha1: celula A1-> LM1;LM2;LM3;LM4
Filha2: celula A1-> LM1;LM2;LM3;LM6
Filha3: celula A1-> LM1;LM2;LM3;LM10

No final do dia eu pego as 3 filhas e consolido na planilha Principal ficando da seguinte forma:
Principal: celula A1 -> LM1;LM2;LM3;LM4;LM6;LM10

Sendo que ocorre essa alteração em várias células e dependendo do número de atualizações, eu perco muito tempo realizando esse trabalho manual de comparação e inserção desses códigos.

Como consegueria fazer isso de forma automatica no Excel?

Desde já agradeço o apoio! []s
#8926
Boa tarde!!

Eu não entendi, muito bem, as filhas 1,2,3, são guias ?
Os dados não muda, segue padrão?
Principal: celula A1 -> LM1;LM2;LM3
Filha1: celula A1-> LM1;LM2;LM3;LM4
Filha2: celula A1-> LM1;LM2;LM3;LM6
Filha3: celula A1-> LM1;LM2;LM3;LM10

Não testado!!
Código: Selecionar todos
Sub EuNaoEntendi_1723()
    Application.ScreenUpdating = False
    Dim LastRow As Long
    Dim Main As Long
    Dim ws As Worksheet
    For Each ws In Sheets(Array("Filha1", "Filha2", "Filha3"))
        LastRow = Sheets(ws.Name).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        Main = Sheets("Principal").Range("A" & Rows.Count).End(xlUp).Row
        Sheets(ws.Name).Range("A2:A" & LastRow).Copy Sheets("Principal").Range("A" & Main + 1)
    Next ws
    Application.ScreenUpdating = True
End Sub
Att
#8946
@alexandrevba cada filha é uma cópia exata da Principal. As filhas 1, 2 e 3 São alteradas por pessoas diferentes com informações distintas.

Obrigado pela ajuda! Abs

alexandrevba escreveu:Boa tarde!!

Eu não entendi, muito bem, as filhas 1,2,3, são guias ?
Os dados não muda, segue padrão?
Principal: celula A1 -> LM1;LM2;LM3
Filha1: celula A1-> LM1;LM2;LM3;LM4
Filha2: celula A1-> LM1;LM2;LM3;LM6
Filha3: celula A1-> LM1;LM2;LM3;LM10

Não testado!!
Código: Selecionar todos
Sub EuNaoEntendi_1723()
    Application.ScreenUpdating = False
    Dim LastRow As Long
    Dim Main As Long
    Dim ws As Worksheet
    For Each ws In Sheets(Array("Filha1", "Filha2", "Filha3"))
        LastRow = Sheets(ws.Name).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        Main = Sheets("Principal").Range("A" & Rows.Count).End(xlUp).Row
        Sheets (ws.Name).Range("A2:A" & LastRow).Copy Sheets("Principal").Range("A" & Main + 1)
    Next ws
    Application.ScreenUpdating = True
End Sub
Att
#8956
alexandrevba escreveu:Boa tarde!!

Eu não entendi, muito bem, as filhas 1,2,3, são guias ?
Os dados não muda, segue padrão?
Principal: celula A1 -> LM1;LM2;LM3
Filha1: celula A1-> LM1;LM2;LM3;LM4
Filha2: celula A1-> LM1;LM2;LM3;LM6
Filha3: celula A1-> LM1;LM2;LM3;LM10

Não testado!!
Código: Selecionar todos
Sub EuNaoEntendi_1723()
    Application.ScreenUpdating = False
    Dim LastRow As Long
    Dim Main As Long
    Dim ws As Worksheet
    For Each ws In Sheets(Array("Filha1", "Filha2", "Filha3"))
        LastRow = Sheets(ws.Name).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        Main = Sheets("Principal").Range("A" & Rows.Count).End(xlUp).Row
        Sheets(ws.Name).Range("A2:A" & LastRow).Copy Sheets("Principal").Range("A" & Main + 1)
    Next ws
    Application.ScreenUpdating = True
End Sub
Att

Testei seu código, mas os resultados não são consolidados na mesma célula.

O processo manual é comparar as planilhas (filha com a principal) e colocar os dados que foram acrescentados na Principal.

Inicio: Principal celula A1 contem -> LM1;LM2
Inicio: Filha 1 celula A1 contem -> LM1;LM2
Fim: Filha 1 celula A1 contem -> LM1;LM2;LM5
Aqui ocorre a comparacao das planilhas Inicio Principal e Fim Filha 1 e é colocado na Principal celula A1 apenas o dado que foi acrescentado "LM5".
Fim: Principal contem -> LM1;LM2;LM5


Sendo que esse processo ocorre para várias planilhas Filhas .... seria um processo automatico de transformar esses dados da celula A1 em colunas, comparar a diferenca entre as filhas x principal, acrescentar o que é diferente e unir tudo em uma celula.

Abraço! Obrgiado pelo help !
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord