Notifications
Clear all

[Resolvido] MACRO -- procurar Matrícula na Aba determinada e retornar os dados em outra Aba

8 Posts
2 Usuários
2 Reactions
1,350 Visualizações
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

Senhores, boa noite!!!

Gostaria de uma ajudinha 😘 (já que atualmente faço isto na mão 😓 😰 🤨 )!!!  

1) A Macro deve procurar a Matrícula do servidor, que está na célula A2, na Aba cujo nome está em C2

2) Ao encontrar a matrícula na referida Aba, deve relacionar todos seus dados em A4:I30 da Aba CÁLCULO-GERAL (estou dando uma boa margem de dados)

 

PS: tive que deixar o arquivo com apenas 2 Abas para caber aqui ... mas ele tem umas 24 Abas!!!

 

PS2: Basicamente seria a fórmula ÍNDICE/CORRESP mas, com ela, acho que o arquivo ficaria muito pesado!!!

 

Este tópico foi modificado 3 anos atrás 3 vezes by JSCOPA10
 
Postado : 27/10/2021 7:19 pm
(@jordsdoexcel)
Posts: 69
Trusted Member
 

Amigo,

Vi agora que a planilha não foi hahaha Não estou conseguindo anexar o arquivo, então segue um link para baixar.

https://www.transfernow.net/dl/20211028bvq5a4Br

Segue a planilha, veja se agora está ok.

Abs.

 
Postado : 28/10/2021 12:05 pm
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

@jordsdoexcel , melhorou, mas ...

 

Troquei esta linha ...
'Selecionando uma região p/ depois exlcuir
Sheets("Calculo-Geral").Cells(5, 1).CurrentRegion.Offset(1, 0).Delete

Por esta ...
Sheets("Calculo-Geral").Range("A5:I30").Clear ..... Já que em torno dessa área eu faço cálculos!!

E, quanto a isto, ficou OK.

-----------

Mas cada vez que executo a Macro ela procura a primeira linha vazia e vai colando um abaixo!!!

Gostaria que ela limpasse A5:I30 ... e colasse os novos dados a partir de A5 (e não procurar linha vazia -- esta parte não seu arrumar)!!!

Este post foi modificado 3 anos atrás por JSCOPA10
 
Postado : 28/10/2021 1:16 pm
(@jordsdoexcel)
Posts: 69
Trusted Member
 

@jscopa10 Mas ela está limpando e depois puxando as informações. Essa linha: Sheets("Calculo-Geral").Cells(5, 1).CurrentRegion.Offset(1, 0).Delete (ou a que você preferiu utilizar), exclui as informações que estão nesse Range, depois procura as informações na aba desejada e puxa pra Calculo Geral.

Segue abaixo o codigo completo:

Option Explicit

Sub procurar_matricula()

'Aceleradores do código
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Dim aba As String
Dim ultLinha As Long, linhaX As Long, linhaY As Long

'Selecionando uma região p/ depois exlcuir
Sheets("Calculo-Geral").Cells(5, 1).CurrentRegion.Offset(1, 0).Delete

linhaX = Sheets("Calculo-Geral").Cells(Rows.Count, 1).End(xlUp).Row + 1
linhaY = 2

aba = Sheets("Calculo-Geral").Cells(2, 3).Value

ultLinha = Sheets(aba).Cells(Rows.Count, 1).End(xlUp).Row

'Após a exlcusão do Range(A1:I30).Procurando na aba a linha desejada e jogando pra aba desejada
Do Until Sheets(aba).Cells(linhaY, 1).Value = vbNullString

If Sheets("Calculo-Geral").Cells(2, 1).Value = Sheets(aba).Cells(linhaY, 1).Value Then

Sheets(aba).Cells(linhaY, 1).Resize(1, 9).Copy

Sheets("Calculo-Geral").Cells(linhaX, 1).PasteSpecial

linhaX = linhaX + 1

End If

linhaY = linhaY + 1

Loop

Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub

 

 

 
Postado : 28/10/2021 1:37 pm
(@jordsdoexcel)
Posts: 69
Trusted Member
 

Talvez eu não esteja entendendo exatamente o que você quer, mas se eu tiver entendido corretamente, o código está fazendo exatamente o que você deseja.

 
Postado : 28/10/2021 1:40 pm
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

@jordsdoexcel , troquei o código lá por esse acima, e continua jogando tudo um abaixo do outro ... é que tenho outros dados abaixo dessa linha 30 e também do lado da coluna I !!!

 

Mas (como utilizo o entorno de A5:I30) para cálculos, tem como essa procura da última vazia ocorrer somente nesse intervalo de A5:I30??? 

 
Postado : 28/10/2021 1:45 pm
(@jordsdoexcel)
Posts: 69
Trusted Member
 

AAAAAAAAAHHH, eu achei que tivesse ficando doido já hahahaha.

Agora eu entendi perfeitamente.

Certo, o código agora vai procurar em todas as linhas da aba desejada, colocar as linhas corretas na primeira aba, a partir da A5, e vai repetir isso até a linha 30. é Isso que você deseja?

Segue o código:

Option Explicit

Sub procurar_matricula()

'Aceleradores do código
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Dim aba As String
Dim linhaY As Long
Dim linhaX As Integer

'Selecionando uma região p/ depois exlcuir
Sheets("Calculo-Geral").Cells(5, 1).CurrentRegion.Offset(1, 0).Delete

linhaX = 5
linhaY = 2

aba = Sheets("Calculo-Geral").Cells(2, 3).Value

'Procurando na aba a linha desejada e jogando pra aba desejada
Do Until Sheets(aba).Cells(linhaY, 1).Value = vbNullString

If Sheets("Calculo-Geral").Cells(2, 1).Value = Sheets(aba).Cells(linhaY, 1).Value Then

'Quando a linha for a 31, encerra os calculo.
If linhaX > 30 Then GoTo Pular

Sheets(aba).Cells(linhaY, 1).Resize(1, 9).Copy

Sheets("Calculo-Geral").Cells(linhaX, 1).PasteSpecial

linhaX = linhaX + 1

End If

linhaY = linhaY + 1

Loop

Pular:

Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub

 
Postado : 28/10/2021 2:26 pm
JSCOPA10 reacted
JSCOPA10
(@jscopa10)
Posts: 344
Reputable Member
Topic starter
 

@jordsdoexcel , Agora siiiimmmmmmm!!! kk ... Fechou!!! ... Valeu!!!

Só troquei a linha do "Delete" por esta "Clear" ... Sheets("Calculo-Geral").Range("A5:I30").Clear  

 
Postado : 28/10/2021 4:44 pm
JordsdoExcel reacted