Gary quiere buscar y reemplazar una abreviatura como «sys» y reemplazarla por «sistemas». El problema es que si reemplaza todas las ocurrencias, transforma las instancias existentes de «system» en «systemtem». Gary podría examinar cada caso y reemplazarlo individualmente, pero eso llevaría una eternidad. Se pregunta si hay una manera de hacer que Excel reemplace solo las apariciones de «palabra completa» de «sys» con «sistemas» como ocurre en Word.

Aquellos familiarizados con las capacidades de Buscar y Reemplazar de Excel podrían pensar, a primera vista, que podría usar «Coincidir con el contenido de toda la celda»

entorno para hacer el trabajo. Sin embargo, eso solo funciona si la abreviatura «sys» es lo único en una celda. En la situación de Gary, ese no es el caso. Tiene frases y oraciones completas que contienen «sys» (como en «sys admin» o «se necesita una verificación del sistema»). De ahí su solicitud de algo así como la configuración de «palabra completa» de Word.

Con eso en mente, hay algunas cosas que puede probar; la mejor solución para usted dependerá de la naturaleza del texto en su hoja de trabajo.

Por ejemplo, si el único punto de confusión probable es la palabra «sistema»,

entonces será más fácil simplemente reemplazar «sistema» con algo único, como «\ {[]}». (Tiendo a gustarme las llaves y corchetes porque son únicos en la mayoría de los datos). Luego, reemplaza «sys» por «sistemas» y finalmente reemplaza «\ {[]}» por «sistema».

Si hay otros puntos de confusión además de «sistema», puede recurrir a agregar espacios en su texto Buscar. En otras palabras, busque «sys» (con los espacios) y reemplácelo con «systems» (nuevamente, con los espacios). Esto encontrará todas las ocurrencias correctamente siempre que sys no esté seguido por un signo de puntuación, no ocurra al principio de una celda y no ocurra al final de una celda.

Por supuesto, puede realizar búsquedas adicionales para obtener parte de esta información. Por ejemplo, puedes buscar «sys» (espacio solo al final)

para encontrar ocurrencias al comienzo de una celda. No le serviría de nada buscar «sys» (espacio solo al principio) porque coincidiría con cualquier aparición de «sistema» precedida por un espacio. En búsquedas secuenciales, también puede buscar «sys» seguido de un punto, coma, signo de interrogación, signo de exclamación, punto y coma, etc.

Si prefiere utilizar una macro, el siguiente es un ejemplo de cómo podría abordar el problema. La macro le solicita lo que desea buscar y con lo que desea reemplazarlo.

Sub ReplaceOnlySpecifirdWord()

Dim c As Range, rng As Range, rngArea As Range     Dim vFind As String, vReplace As String     Dim v As Variant     Dim arrSplit As Variant     Dim s As String     Dim i As Integer, n As Long     Dim b As Boolean     Const csDELIMITER = " "



On Error Resume Next     ' Reference Constants only     Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)

If rng Is Nothing Then         MsgBox "There are no constants on active sheet...", vbExclamation         Exit Sub     End If     On Error GoTo 0

' Get Find and Replace strings     v = InputBox(Prompt:="Please enter String to be replaced.")

If v <> "" Then         vFind = v     Else         MsgBox "Wrong entry; app is going to be terminated.", vbExclamation         Exit Sub     End If

v = InputBox(Prompt:="Please enter Replace String.")

If v <> "" Then         vReplace = v     Else         MsgBox "Wrong entry; app is going to be terminated.", vbExclamation         Exit Sub     End If

Application.ScreenUpdating = False     Application.Calculation = xlCalculationManual     n = 0     For Each rngArea In rng.Areas         For Each c In rngArea.Cells             b = False             arrSplit = Split(c.Value, csDELIMITER)

For i = LBound(arrSplit) To UBound(arrSplit)

If arrSplit(i) = vFind Then                     arrSplit(i) = vReplace                     n = n + 1                     b = True                 End If             Next i             If b Then                 s = vbNullString                 For i = LBound(arrSplit) To UBound(arrSplit)

s = s & arrSplit(i)

If i <> UBound(arrSplit) Then                         s = s & csDELIMITER                     End If                 Next i                 c.Value = s             End If         Next c     Next rngArea

Application.Calculation = xlCalculationAutomatic     MsgBox "Replaced " & n & " words...", vbInformation End Sub

La macro hace su trabajo encontrando todas las palabras en cada celda (a su vez).

Si la palabra coincide con lo que está buscando, se reemplaza. A continuación, se vuelve a juntar el contenido de la celda.

Hay un inconveniente en este enfoque: la coincidencia es muy literal. Esto significa que «sys» coincidirá con «sys», pero no con «Sys», «SYS» o «sys» seguidos de un signo de puntuación. (La macro utiliza espacios como delimitadores entre palabras.)

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (13391) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.