Encontre e substitua várias palavras em uma coluna no Excel 2007

Encontre e substitua várias palavras em uma coluna no Excel 2007
Sub xLator2()
Dim s1 As Worksheet, s2 As Worksheet
Dim N As Long, i As Long
Dim from(), too()
Set s1 = Sheets("Sheet1") '   contains the data
Set s2 = Sheets("Sheet2") '   contains the translation table

s2.Activate

N = Cells(Rows.Count, 1).End(xlUp).Row
ReDim from(1 To N)
ReDim too(1 To N)
For i = 1 To N
    from(i) = Cells(i, 1).Value
    too(i) = Cells(i, 2).Value
Next i

s1.Activate

For i = LBound(from) To UBound(from)
    Cells.Replace What:=from(i), Replacement:=too(i)
Next i
End Sub

Estou usando o código acima para localizar e substituir várias palavras (na "Coluna A Folha 1" por palavras na "Coluna B Folha 2") na planilha mencionada abaixo:

https://docs.google.com/spreadsheets/d/15TRLccDr_EAR8s78u-WGSkGpAecBf42_lhRkjCev_WE/edit?usp=sharing

No entanto, quando aplico isso em outra planilha (conforme mencionado abaixo) para outros dados, o código falha, ou seja, recebo palavras distorcidas na planilha1:

https://docs.google.com/spreadsheets/d/14ba9pQDjMPWJd4YFpGffhtVcHxml0LdUUVQ0prrOEUY/edit?usp=sharing

Por favor, ajude-me para que eu possa substituir as palavras da "Coluna A Folha1" pelas palavras da "Coluna B Folha2"

Nota: Os links acima foram fornecidos para planilhas do Google, mas estou tendo problemas na planilha do Excel 2007.

Solicito que você me ajude fornecendo o código completo revisado, pois não sou bom em VBA

Responder1

Presumo que o que você deseja é fazer a substituição apenas uma vez e interromper outras regras assim que a substituição for feita. Tomando sua segunda folha como exemplo, a linha 12 "mas" deve ser traduzida para "no entanto" e interromper outras regras para que "no entanto" não seja traduzido para "hoyouever" (como a regra nº 17 traduz "nós" para "você" ).

Uma solução alternativa é primeiro traduzir tudo para algum símbolo intermediário e, na segunda rodada, traduzir dos símbolos intermediários para o substituto desejado. Modificar ligeiramente seu código conforme abaixo funcionará:

Sub xLator2()
Dim s1 As Worksheet, s2 As Worksheet
Dim N As Long, i As Long
Dim from(), too()
Set s1 = Sheets("Sheet1") '   contains the data
Set s2 = Sheets("Sheet2") '   contains the translation table

s2.Activate

N = Cells(Rows.Count, 1).End(xlUp).Row
ReDim from(1 To N)
ReDim too(1 To N)
For i = 1 To N
    from(i) = Cells(i, 1).Value
    too(i) = Cells(i, 2).Value
Next i

s1.Activate

' -------------- Modification starts here --------------------------
' Replace from from(i) to __MYREPLACEMENTi__  (where i is the counter)
For i = LBound(from) To UBound(from)
    Cells.Replace What:=from(i), Replacement:="__MYREPLACEMENT" + Str(i) + "__"
Next i
' Replace from __MYREPLACEMENTi__ to too(i)  (where i is the counter)
For i = LBound(from) To UBound(from)
    Cells.Replace What:="__MYREPLACEMENT" + Str(i) + "__", Replacement:=too(i)
Next i
' -------------- Modification ends here --------------------------
End Sub

informação relacionada