Larry è stato incaricato di sostituire o aggiungere testo a ogni cella in una colonna in diverse cartelle di lavoro di Excel. Il problema è che questo nuovo testo deve essere sottolineato e di un colore diverso. Trova e sostituisci sottolinea e colora tutto il testo nelle celle, ma Larry ha bisogno che la formattazione si applichi solo al testo aggiunto.

Se devi eseguire questo tipo di attività solo poche volte, la soluzione più semplice potrebbe essere quella di avvalerti dell’aiuto di Microsoft Word. È possibile copiare l’intervallo di celle in un documento di Word, utilizzare le funzionalità Trova e sostituisci di Word per apportare le modifiche alla formattazione e quindi copiare nuovamente il testo nel foglio di lavoro di Excel.

Se devi eseguire questa operazione più spesso, l’approccio migliore è utilizzare una macro. La seguente macro può essere utilizzata per modificare il testo nelle celle di una colonna o per aggiungere testo alle celle.

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

Ci sono tre modifiche che devi fare per usare la macro. Il primo è assicurarsi che la variabile lCol sia impostata sul numero di colonna che si desidera modificare. Secondo, dovresti impostare sFind uguale al testo che vuoi trovare e sostituire nelle celle. Puoi, se lo desideri, lasciare vuoto sFind (come sopra) se vuoi solo aggiungere del testo alla cella.

Infine, è necessario impostare sReplace uguale a ciò che si desidera sostituire con sFind o a ciò che si desidera aggiungere alle celle.

La macro esamina ogni cella nella colonna specificata e, se la cella non contiene una formula e contiene già del testo, sostituisce o aggiunge il testo. Infine, se è stata apportata una modifica alla cella, tutto ciò che era in sReplace viene sottolineato e reso rosso. Si noti che se viene apportata una modifica alla cella, qualsiasi formattazione esistente nella cella viene sovrascritta dalla modifica apportata.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (9302) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.