Bom dia
O que há de errado com a macro? nada. Tentei fazer um pequeno ajuste na mesma mas o resultado não ficou aos contento. Então...
Grato
Dimorais,
As referências que vc alterou estão erradas. Se for apenas para corrigir o que vc digitou, seria assim:
Sub localizarSubstituir() Dim sRange As Range Dim sValorOrig As String Dim sReplace As String sValorOrig = [E1,F1,G1] sReplace = [I1,J1,K1] Set sRange = Range("A3:C100") sRange.Replace What:=sValorOrig, Replacement:=sReplace, LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub
Porém, se eu entendi o que vc quer, talvez seja esse o código:
Sub localizarSubstituir() Dim sRange1 As Range Dim sRange2 As Range Dim linha1 As Integer Dim linha2 As Integer Dim sValorOrig(3) As Integer Dim sReplace(3) As Integer Dim i As Integer Dim j As Integer Dim Row As Integer For i = 1 To 3 sValorOrig(i) = Cells(1, i + 4).Value sReplace(i) = Cells(1, i + 8).Value Next i Set sRange1 = Range("A3") Set sRange2 = Range("C100") linha1 = sRange1.Row linha2 = sRange2.Row For Row = linha1 To linha2 j = 0 For i = 1 To 3 If Cells(Row, i).Value = sValorOrig(1) Or Cells(Row, i).Value = sValorOrig(2) Or Cells(Row, i).Value = sValorOrig(3) Then j = j + 1 Next i If j = 3 Then For i = 1 To 3 Cells(Row, i).Value = sReplace(i) Next i End If Next Row End Sub
Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.
Gilmar
Boa tarde!!
Eu não testei, mas tente..
Sub localizarSubstituir() Dim sRange As Range Dim sValorOrig As String Dim sReplace As String sValorOrig = [E3,F3,G3] sReplace = [I3,J3,K3] Set sRange = Range("A3:A100,B3:B100,C3:C100") '<- Veja... sRange.Replace What:=sValorOrig, Replacement:=sReplace, LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Meus caros gtasalikis e AlexandreVba, ainda não é isso. Nessa plan coloquei os resultados obtidos com as macros sugeridas e o resultado obtido com cada uma delas. Na plan 0
o que de fato o código precisa fazer para obter os resultados esperados.
tente assim:
Sub Gtsalikis_2() Dim sRangeI As Range Dim sRangeF As Range Dim sRange1 As Range Dim sRange2 As Range Dim linha1 As Integer Dim linha2 As Integer Dim sValorOrig(3) As Integer Dim sReplace(3) As Integer Dim i As Integer Dim j As Integer Dim Row As Integer Dim Deslocamento As Integer For i = 1 To 3 sValorOrig(i) = Cells(1, i + 4).Value sReplace(i) = Cells(1, i + 8).Value Next i Set sRangeI = Range("A3:C100") Set sRangeF = Range("M3:O100") Set sRange1 = Range("M3") Set sRange2 = Range("O100") linha1 = sRange1.Row linha2 = sRange2.Row sRangeF.Clear sRangeF.Value = sRangeI.Value For Row = linha1 To linha2 j = 0 For i = 1 To 3 If Cells(Row, i + 12).Value = sValorOrig(1) Or Cells(Row, i).Value = sValorOrig(2) Or Cells(Row, i).Value = sValorOrig(3) Then j = j + 1 Next i If j = 3 Then For i = 1 To 3 Cells(Row, i + 12).Value = sReplace(i) Next i End If Next Row End Sub
Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.
Gilmar
Tentando contribuir:
Sub tt() Dim nProc As Long, nNovo As Long, x As Long Dim cel As Range For x = 5 To 7 nProc = Cells(1, x) nNovo = Cells(1, x + 4) For Each cel In Range(Cells(3, x - 4), Cells(100, x - 4)) If cel.Value = nProc Then cel.Value = nNovo Next Next End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Agradeço aos parceiros AlexandreVba, gtsalikis e ao Reinaldo. A macro do Reinaldo foi a que melhor se adequou ao pedido.
Caso seja necessário reabrir o tópico, o autor poderá enviar uma MP para um dos moderadores solicitando o desbloqueio.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel