Trennen von Text nach Farbe (Microsoft Excel)
Feroz enthält eine Reihe von Textwerten in Spalte A. Diese Werte werden in jeder Zelle mit zwei verschiedenen Schriftfarben formatiert. (Der erste Teil des Textes ist eine Farbe und der zweite Teil ist eine andere Farbe.) Er möchte diese Textwerte in die Spalten B und C aufteilen, sodass sich alles mit der ersten Farbe in Spalte B und alles mit der zweiten Farbe befindet in Spalte C. Er stellt fest, dass das Werkzeug Text in Spalten dies nicht handhabt, und fragt sich, ob dies möglich ist.
Ja, das kann man machen. Eine Möglichkeit besteht darin, die in Excel integrierte Flash-Füllfunktion zu verwenden. (Dieses Tool ist nur in Excel 2013 oder späteren Versionen verfügbar.) Angenommen, Sie beginnen mit Daten, die folgendermaßen aussehen:
(Siehe Abbildung 1.)
Abbildung 1. Ihre mehrfarbigen Daten.
Beachten Sie, dass meine Testdaten in Spalte E einige Merkmale der Daten in Spalte A enthalten. Zu diesem Zeitpunkt müssen Sie Flash Fill nur noch etwas geben, mit dem es funktionieren kann. Dazu zerlege ich den Text in den Zeilen 2 und 3 manuell, wie hier gezeigt: (Siehe Abbildung 2.)
Abbildung 2. Einrichten der Beispiele.
Es ist wichtig, dass die Beispiele, die Sie in B2: C3 erstellen, genau sind. Sie sollten alles enthalten, was in einer beliebigen Farbe vorliegt (einschließlich führender oder nachfolgender Leerzeichen), und Rechtschreibung und Großschreibung sollten korrekt sein.
Wählen Sie nun Zelle B4 und drücken Sie Strg + E. Dadurch wird Flash Fill aktiviert, und im Rest von Spalte B wird Text angezeigt. Gehen Sie in Spalte C genauso vor: Wählen Sie Zelle C4 aus und drücken Sie Strg + E. Ihre Ergebnisse sollten ungefähr so aussehen: (Siehe Abbildung 3.)
Abbildung 3. Nach Verwendung von Flash Füllen Sie beide Spalten aus.
Ich möchte darauf hinweisen, dass Ihr Erfolg mit Flash Fill zu einem großen Teil von den Eigenschaften der Daten in Spalte A abhängt. In den meisten Fällen erledigt es den größten Teil der Arbeit und kann die Aufgabe enorm erledigen. Es kann einige seltsame Fälle geben, in denen Flash Fill nicht erkennen kann, wie es Ihre Daten auseinander ziehen soll. Sie können dies in der vorherigen Abbildung sehen, in der die Zellen A7, A9 und A11 nicht richtig auseinandergezogen wurden. Sie sollten Ihre Ergebnisse sorgfältig prüfen, um sicherzustellen, dass sie sinnvoll sind.
Wenn Flash Fill für Sie nicht funktioniert, möchten Sie ein Makro erstellen, um die Arbeit zu erledigen. Es ist möglich, ein Makro zu erstellen, das für alle Zellen in Spalte A funktioniert und den Text in die Spalten B und C zieht (wie es Feroz benötigt). Es ist jedoch flexibler, eine benutzerdefinierte Funktion zu erstellen, die alles zurückgibt wird aus der Zelle gesucht. Hier ist ein Beispiel:
Function SplitColors(r As Range, Optional iWanted As Integer = 1) _ As String Dim sTemp As String Dim J As Integer Dim K As Integer Dim iColors(9) As Integer sTemp = "" If r.Cells.Count = 1 Then For J = 1 To 9 iColors(J) = 0 Next J ' Determine where colors change ' Remember there will always be at least one color K = 1 iColors(K) = 1 For J = 2 To Len(r.Text) If r.Characters(J,1).Font.Color <> _ r.Characters(J-1,1).Font.Color Then K = K + 1 iColors(K) = J End If Next J ' Check if wanted color is less than total colors If iWanted <= K Then J = iColors(iWanted + 1) If J = 0 Then J = Len(r.Text) + 1 J = J - iColors(iWanted) sTemp = Mid(r.Text, iColors(iWanted), J) End If End If SplitColors = sTemp End Function
Die SplitColors-Funktion erfordert einen Parameter (einen Bereich, auf den reagiert werden soll)
und einen zweiten optionalen Parameter (welche Farbe aus dem gewünschten Bereich).
Die Funktion prüft zunächst, ob eine einzelne Zelle übergeben wurde. Wenn ja, bestimmt es, wie viele Farben sich in dieser Zelle befinden und welche Zeichennummern die Farbänderungen aufweisen. Wenn dann die gewünschte Farbe (die im optionalen zweiten Parameter übergeben wird) kleiner als die Anzahl der Farben in der Zelle ist, werden die Zeichen, die diese Farbe verwenden, zurückgegeben.
Wenn Sie beispielsweise die Zellen mit der ersten Farbe in Zelle A2 zurückgeben möchten, können Sie in Ihrem Arbeitsblatt eine der folgenden Optionen verwenden:
=SplitColors(A2, 1) =SplitColors(A2)
Der zweite Aufruf funktioniert, da der zweite Parameter optional ist. Wenn Sie es nicht einschließen, geht die Funktion davon aus, dass Sie mit der ersten Farbe arbeiten möchten. Wenn Sie den Text mit der zweiten Farbe in der Zelle zurückgeben möchten, funktioniert Folgendes:
=SplitColors(A2, 2)
Die SplitColors-Funktion funktioniert mit bis zu 9 Farben in jeder Zelle, die Sie auschecken. Wenn Sie einen zweiten Parameter von 9 oder höher angeben, wird ein Fehler angezeigt.
_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 (13605) gilt für Microsoft Excel 2013, 2016, 2019 und Excel in Office 365.