Ларри было поручено заменить или добавить текст в каждую ячейку столбца в нескольких книгах Excel. Проблема в том, что этот новый текст должен быть подчеркнут и другого цвета. Функция «Найти и заменить» подчеркивает и раскрашивает весь текст в ячейках, но Ларри нужно, чтобы форматирование применялось только к добавленному тексту.

Если вам нужно выполнить такую ​​задачу всего несколько раз, самым простым решением может быть помощь Microsoft Word. Вы можете скопировать диапазон ячеек в документ Word, использовать возможности Word «Найти и заменить», чтобы внести изменения в форматирование, а затем скопировать текст обратно на рабочий лист Excel.

Если вам приходится выполнять эту задачу чаще, то лучше всего использовать макрос. Следующий макрос можно использовать для изменения текста в ячейках столбца или для добавления текста в ячейки.

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

Чтобы использовать макрос, необходимо внести три изменения. Во-первых, убедитесь, что для переменной lCol задан номер столбца, на который вы хотите повлиять. Во-вторых, вы должны установить sFind равным тексту, который вы хотите найти и заменить в ячейках. Вы можете, если хотите, оставить sFind пустым (как указано выше), если вы просто хотите добавить текст в ячейку.

Наконец, вам нужно установить sReplace равным тому, что вы хотите заменить sFind, или тем, что вы хотите добавить в ячейки.

Макрос просматривает каждую ячейку в указанном столбце и, если ячейка не содержит формулы и в ней уже есть текст, он заменяет или добавляет ваш текст. Наконец, если в ячейку было внесено изменение, то все, что было в sReplace, подчеркивается и становится красным. Обратите внимание, что если в ячейку вносятся изменения, то любое существующее форматирование в ячейке отменяется внесенным изменением.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (9302) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.