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