Adición de texto con formato diferente a una celda (Microsoft Excel)
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.