Notifications
Clear all

Localizar texto em A1 e substituir por texto em B1

8 Posts
3 Usuários
0 Reactions
996 Visualizações
(@chaguelito)
Posts: 4
New Member
Topic starter
 

Bom dia pessoal,

Postando minha primeira dúvida aqui no fórum.

Eu recebo regularmente uma planilha com códigos que precisam ser alterados. Por exemplo:
MA1 => P05
MA2 => P68 ...

São aproximadamente 70 valores. Eu tenho uma tabela que mostra quais códigos devem ser substituídos, porem não está completa (ex.: o MA25 eu ainda não sei por qual código deve ser substituido.).
Queria criar uma macro q procurasse o texto da célula A1 ("MA1") na coluna C:C e substituísse pelo texto da célula B1 ("P05"), e assim por diante. De modo que se eu alterasse o texto em B1 já alterasse o resultado da macro.
Queria desta forma pois ainda não terminei de preencher os valores da coluna B e queria q conforme eu fosse preenchendo esse texto já entrasse automaticamente na macro.

Fui claro?

De qq forma já agradeço!

 
Postado : 20/07/2016 6:55 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Chaguelito,

Bom dia!

Anexe, aqui mesmo no fórum, um arquivo exemplo compactado. Você pode colocar dados fictícios, porém com o layout real dos seus dados.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 20/07/2016 7:14 am
(@chaguelito)
Posts: 4
New Member
Topic starter
 

Aí está wag!

Eu fiz uma macro de localização e substituição, porém ela não se altera se eu mudar os valores da tabela.

Vê oq vc acha.

 
Postado : 20/07/2016 7:30 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Aqui no trabalho não consigo abrir arquivo .rar. Só Zip!

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 20/07/2016 12:36 pm
(@osvaldomp)
Posts: 858
Prominent Member
 

Experimente

Sub SubstituiCódigos()
 Dim k As Long, d As Long, MA As Range, x As Long
  For Each MA In Range("L4:L" & Range("L4").End(4).Row)
   d = Right(MA.Value, 1 + -CInt(Len(MA.Value) = 4))
   x = Int(((d - 1) / 29)) * -29 + 3
   k = Int(((d - 1) / 29)) * 3 + 3
   MA.Value = Cells(d + x, k)
  Next MA
End Sub

obs. código válido para 58 itens e tabela em 'B2:F32' conforme a amostra disponibilizada

Osvaldo

 
Postado : 20/07/2016 3:46 pm
(@chaguelito)
Posts: 4
New Member
Topic starter
 

Muito bom Oswaldo!

Muito obrigado, vai me economizar um tempo.

Sem querer abusar, mas eu não consegui entender oq vc fez, será que vc podia criar outra macro pra segunda aba?

Vou anexar o arquivo sem compactar caso o wag queira dar uma olhada.

Obrigado a todos.

 
Postado : 21/07/2016 6:37 am
(@osvaldomp)
Posts: 858
Prominent Member
 

... será que vc podia criar outra macro pra segunda aba?

O código abaixo funciona em tabelas com qualquer quantidade de linhas. Experimente nas tabelas das planilhas 'MURO 1' E 'MURO 2'.

Sub SubstituiCódigosV2()
 Dim k As Long, d As Long, MA As Range, x As Long, c As Long
 c = Range("B4").End(4).Row - 3
  For Each MA In Range("L4:L" & Range("L4").End(4).Row)
   d = Right(MA.Value, 1 + -CInt(Len(MA.Value) = 4))
   x = Int(((d - 1) / c)) * -c + 3
   k = Int(((d - 1) / c)) * 3 + 3
   MA.Value = Cells(d + x, k)
  Next MA
End Sub

Osvaldo

 
Postado : 21/07/2016 5:17 pm
(@chaguelito)
Posts: 4
New Member
Topic starter
 

Perfeito Osvaldo!!

Muito obrigado cara.

 
Postado : 22/07/2016 7:53 am