Notifications
Clear all

Atualizar dados de uma planilha para outra e se não existir os dados inserir

6 Posts
4 Usuários
0 Reactions
1,339 Visualizações
(@lspetrucci)
Posts: 3
New Member
Topic starter
 

Boa tarde a todos!

 

Estou com um novo desafio e estou precisando de uma ajuda de vocês.

Tenho 2 planilhas, uma com o nome de "Abertura" e a outra com o nome de "Ongoing", as duas planilhas não 100% iguais, a planilha "Abertura" tem algumas colunas a mais que a planilha "Ongoing", mas os dados que preciso atualizar e/ou inserir entre uma planilha e a outra são iguais. Então, o que eu preciso é:

 

1 - Percorra todos os registros na planilha "Abertura", verificando se o valor do campo "loja" existe na planilha "Ongoing", se existir, os dados da planilha "Ongoing" serão atualizados de acordo com os dados dos mesmos campos da planilha "Abertura". 

 

Campos tabela Abertura

Loja Chamado IN Chamado Field Motivo da abertura Func. loja SH/RUA Duração Abertura Conclusão Status Field Status TSS Problemas Solução Técnica

 

Campos tabela Ongoing

Chamado IN Chamado Field Motivo da abertura Loja Abertura Conclusão Status Field Status TSS Problemas Solução Técnica

 OBS: Observer que na tebale "Abertura" existem mais colunas que a tabela "Ongoing", mas existem campos em comum entre as duas planilhas e são estes campos que preciso atualizar da planilha "Atualizar" para "Ongoing". 

 

Para o item acima, eu conseguir fazer o código e está funcionando. Segue abaixo:

 

Sub inserir_atualizar()

Application.ScreenUpdating = False

'Rotina de checagem se existe a loja na TAB Ongoing e atualizar os dados com base na planilha Abertura
'---------------------------------------------------------------------------------------------------------------------------

Dim w_Abertura As Worksheet
Dim w_Ongoing As Worksheet
Dim loja As String
Dim linha, linha1 As Integer

Set w_Ongoing = Sheets("Ongoing")
Set w_Abertura = Sheets("Abertura")

linha = 2

Do While w_Abertura.Cells(linha, 1) <> ""

ultimalinha = w_Ongoing.Cells(Rows.Count, "A").End(xlUp).Row
j = w_Ongoing.Cells(Rows.Count, "A").End(xlUp).Row + 1

For i = 2 To ultimalinha

  loja = w_Ongoing.Cells(i, 4)

  If w_Abertura.Cells(linha, 1) = loja Then

     w_Ongoing.Cells(i, 1) = w_Abertura.Cells(linha, 2)
     w_Ongoing.Cells(i, 2) = w_Abertura.Cells(linha, 3)  
     w_Ongoing.Cells(i, 3) = w_Abertura.Cells(linha, 4) 
     w_Ongoing.Cells(i, 4) = w_Abertura.Cells(linha, 1)
     w_Ongoing.Cells(i, 5) = w_Abertura.Cells(linha, 8)
     w_Ongoing.Cells(i, 6) = w_Abertura.Cells(linha, 9)
     w_Ongoing.Cells(i, 7) = w_Abertura.Cells(linha, 10)
     w_Ongoing.Cells(i, 8) = w_Abertura.Cells(linha, 11)
     w_Ongoing.Cells(i, 9) = w_Abertura.Cells(linha, 12)
     w_Ongoing.Cells(i, 10) = w_Abertura.Cells(linha, 13)

     linha = linha + 1

 End If

  Next

     MsgBox "Dados atualizado com sucesso."

Loop

Application.ScreenUpdating = False

End Sub

2 - Percorra todos os registros na planilha "Abertura", verificando se o valor do campo "loja" existe na planilha "Ongoing", se não existir, será inserido uma nova linha "Ongoing" e copiar estes dados que não existem da planilha"Abertura" para planilha "Ongoing". Lembrando que as colunas da planilha "Abertura" não são totalmente iguais a planilha "Ongoing".

 

Obrigado!

Cordialmente; 


Editado pela Moderação. Motivo: Utilize o botão Código (< >) para inserir código VBA ou Fórmulas.

 
Postado : 17/08/2020 12:38 pm
(@televisaos)
Posts: 49
Eminent Member
 

Bom dia @lspetrucci,

Uma função PROCV não resolveria o seu caso?

Att, Televisaos

 
Postado : 18/08/2020 4:11 pm
(@lspetrucci)
Posts: 3
New Member
Topic starter
 

@televisaos

Obirgado por sua resposta!!!

Infelizmente não, pois na planilha "Ongoing" eu mantenho um histórico dos dados e na planilha "Abertura" é onde entram os novos dados e/ou atualizam dados existentes, então, se na planilha "Abertura" tiver a entrada de um novo dado o mesmo deve ser add na planilha "Ongoing"  e utilizando o PROCV isso não iria funcionar.

 
Postado : 19/08/2020 7:33 pm
(@lspetrucci)
Posts: 3
New Member
Topic starter
 

Alguém consegue me ajudar. Infelizmente até o momento não conseguir achar uma solução para o meu problema.

 

Obrigado!

Cordialmente.

 
Postado : 16/09/2020 6:24 pm
(@anderson)
Posts: 203
Reputable Member
 

Eu fiz estes vídeos para te ajudar:

 

https://youtu.be/ZPkgQU8HQhE

https://youtu.be/WiidU5SfzKw

Em 90% dos casos em que não se anexa o arquivo, ocorrem mal-entendidos, gerando perda de tempo de ambos os lados.

 
Postado : 16/09/2020 7:08 pm
Raygsson
(@raygsson)
Posts: 68
Trusted Member
 

Aparentemente fazer isso é bem simples, tente desta forma pra sempre que não localizar a loja da aba "Abertura"  na aba "Ongoing" incluir os novos dados em uma linha vazia na aba "Ongoing":

LinhaFinal = Sheet2.Range("A1048576").End(xlUp).Row
For LinhaAtual = 2 To LinhaFinal

Valor = Sheet2.Range("A" & LinhaAtual)
Existe = Application.VLookup(Valor, Sheet1.Range("D2:D1048576"), 1, 0)

If IsError(Existe) Then

LinhaVazia = Sheet1.Range("A1048576").End(xlUp).Row + 1

Sheet1.Range("A" & LinhaVazia) = Sheet2.Range("B" & LinhaAtual)
Sheet1.Range("B" & LinhaVazia) = Sheet2.Range("C" & LinhaAtual)
Sheet1.Range("C" & LinhaVazia) = Sheet2.Range("D" & LinhaAtual)
Sheet1.Range("D" & LinhaVazia) = Sheet2.Range("A" & LinhaAtual)
Sheet1.Range("E" & LinhaVazia) = Sheet2.Range("H" & LinhaAtual)
Sheet1.Range("F" & LinhaVazia) = Sheet2.Range("I" & LinhaAtual)
Sheet1.Range("G" & LinhaVazia) = Sheet2.Range("J" & LinhaAtual)
Sheet1.Range("H" & LinhaVazia) = Sheet2.Range("K" & LinhaAtual)
Sheet1.Range("I" & LinhaVazia) = Sheet2.Range("L" & LinhaAtual)
Sheet1.Range("J" & LinhaVazia) = Sheet2.Range("M" & LinhaAtual)

End If

Next
 
Postado : 16/09/2020 7:12 pm