将不同格式的文本添加到单元格(Microsoft Excel)
Larry的任务是在多个Excel工作簿的一列中的每个单元格中替换或添加文本。问题在于,此新文本必须加下划线并使用不同的颜色。查找和替换下划线并为单元格中的所有文本加上颜色,但是Larry需要将格式应用于仅添加的文本。
如果您只需要几次执行此类任务,则最简单的解决方案可能是寻求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_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(9302)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。