Hinzufügen von unterschiedlich formatiertem Text zu einer Zelle (Microsoft Excel)
Larry wurde beauftragt, jede Zelle in einer Spalte in mehreren Excel-Arbeitsmappen zu ersetzen oder Text hinzuzufügen. Das Problem ist, dass dieser neue Text unterstrichen und in einer anderen Farbe sein muss. Suchen und Ersetzen unterstreicht und färbt den gesamten Text in den Zellen, aber Larry benötigt die Formatierung, um nur auf den hinzugefügten Text angewendet zu werden.
Wenn Sie diese Art von Aufgabe nur einige Male ausführen müssen, besteht die einfachste Lösung möglicherweise darin, die Hilfe von Microsoft Word in Anspruch zu nehmen. Sie können den Zellenbereich in ein Word-Dokument kopieren, die Formatierungs- und Ersetzungsfunktionen von Word verwenden, um die Formatierungsänderungen vorzunehmen, und dann den Text zurück in Ihr Excel-Arbeitsblatt kopieren.
Wenn Sie diese Aufgabe häufiger ausführen müssen, ist es am besten, ein Makro zu verwenden. Das folgende Makro kann verwendet werden, um entweder Text in den Zellen einer Spalte zu ändern oder um den Zellen Text hinzuzufügen.
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
Es gibt drei Änderungen, die Sie vornehmen müssen, um das Makro zu verwenden. Zunächst müssen Sie sicherstellen, dass die Variable lCol auf die Spaltennummer festgelegt ist, die Sie beeinflussen möchten. Zweitens sollten Sie sFind gleich dem Text setzen, den Sie in den Zellen suchen und ersetzen möchten. Wenn Sie möchten, können Sie sFind leer lassen (wie oben), wenn Sie der Zelle nur Text hinzufügen möchten.
Schließlich müssen Sie sReplace gleich dem setzen, durch das Sie sFind ersetzen möchten, oder dem, was Sie den Zellen hinzufügen möchten.
Das Makro durchsucht jede Zelle in der angegebenen Spalte. Wenn die Zelle keine Formel enthält und bereits Text enthält, wird Ihr Text ersetzt oder angehängt. Wenn schließlich eine Änderung an der Zelle vorgenommen wurde, wird alles, was sich in sReplace befand, unterstrichen und rot angezeigt. Sie sollten beachten, dass bei einer Änderung an der Zelle alle vorhandenen Formatierungen in der Zelle durch die vorgenommene Änderung überschrieben werden.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (9302) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.