Busque y reemplace varias palabras en una columna en Excel 2007

Busque y reemplace varias palabras en una columna en 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

Estoy usando el código anterior para buscar y reemplazar varias palabras (en la "Columna A Hoja 1" con palabras en la "Columna B Hoja 2") en la hoja mencionada a continuación:

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

Sin embargo, cuando aplico esto en otra hoja (como se menciona a continuación) para otros datos, el código falla, es decir, obtengo palabras distorsionadas en la hoja 1:

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

Por favor ayúdenme para poder reemplazar palabras en la "Columna A Hoja1" con palabras en la "Columna B Hoja2"

Nota: Los enlaces anteriores provienen de la hoja de cálculo de Google, sin embargo, tengo problemas en la hoja de Excel 2007.

Le pido que me ayude dando el código completo revisado ya que no soy bueno en VBA.

Respuesta1

Supongo que lo que desea es realizar el reemplazo solo una vez y detener otras reglas una vez que se realiza el reemplazo. Tomando su segunda hoja como ejemplo, la línea 12 "pero" debe traducirse como "sin embargo" y detener reglas adicionales para que "sin embargo" no se traduzca como "hoyouever" (ya que la regla n.° 17 traduce "nosotros" como "usted" ).

Una solución alternativa es traducir primero todo a algún símbolo intermedio y, en la segunda ronda, traducir desde los símbolos intermedios al reemplazo deseado. Modificar ligeramente su código como se muestra a continuación 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

información relacionada