A Larry se le ha encomendado la tarea de reemplazar o agregar texto a cada celda en una columna en varios libros de Excel. El problema es que este nuevo texto tiene que estar subrayado y en un color diferente. Buscar y reemplazar subraya y colorea todo el texto de las celdas, pero Larry necesita que el formato se aplique solo al texto agregado.

Si solo tiene que hacer este tipo de tarea unas pocas veces, la solución más simple podría ser solicitar la ayuda de Microsoft Word. Puede copiar el rango de celdas a un documento de Word, usar las capacidades de Buscar y Reemplazar de Word para realizar los cambios de formato y luego copiar el texto a su hoja de cálculo de Excel.

Si tiene que realizar esta tarea con más frecuencia, el mejor enfoque es utilizar una macro. La siguiente macro se puede utilizar para cambiar texto en las celdas de una columna o para agregar texto a las celdas.

Sub AddFormatedText()

Dim K As Long     Dim lCol As Long     Dim LastRow As Long     Dim sFind As String     Dim sReplace As String     Dim FullCells As Range     Dim c As Range

' Column to work on     lCol = 1

' Text to be replaced in the cell     ' If this variable is empty, then     ' the contents of sReplace are added     ' to the end of the cell     sFind = ""



' Text to replace sFind or to add to the cell     sReplace = "More Text"



' Find last row in column A     LastRow = Cells(Rows.Count, "A").End(xlUp).Row

' Set range to check     Set FullCells = Range(Cells(1, lCol), Cells(LastRow, lCol))

' Start looking through each cell     For Each c In FullCells         K = 0         ' Only check if there is not a formula in the cell         ' and if the cell has some text in it         If Not c.HasFormula And Len(c.Text) > 0 Then             If sFind > "" Then                 ' Replace first found instance of text in sFind                 K = InStr(c.Text, sFind)

If K > 0 Then                     c = Left(c.Text, K - 1) & sReplace & _                       Mid(c.Text, K + Len(sFind))

End If             Else                 K = Len(c.Text)

' Add the text to the cell (plus a space)

c = c & " " & sReplace                 ' Adjust starting position for formatting                 K = K + 2             End If         End If

' Format the added text, if any         If K > 0 Then             With c.Characters(Start:=K, Length:=Len(sReplace)).Font                 .Underline = xlUnderlineStyleSingle                 .Color = vbRed             End With         End If     Next c End Sub

Hay tres cambios que debe realizar para utilizar la macro. La primera es asegurarse de que la variable lCol esté establecida en el número de columna que desea afectar. En segundo lugar, debe establecer sFind igual al texto que desea buscar y reemplazar en las celdas. Si lo desea, puede dejar sFind vacío (como se muestra arriba) si solo desea agregar texto a la celda.

Finalmente, debe establecer sReplace igual a lo que desea reemplazar sFind o lo que desea agregar a las celdas.

La macro examina cada celda en la columna especificada y, si la celda no contiene una fórmula y ya tiene algo de texto, reemplaza o agrega su texto. Finalmente, si se realizó un cambio en la celda, lo que estaba en sReplace se subraya y se pone rojo. Debe tener en cuenta que si se realiza un cambio en la celda, el cambio que se realiza anula cualquier formato existente en la celda.

_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 (9302) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.