In Excel können Sie die Daten in Ihren Arbeitsblättern nach einer beliebigen Anzahl von Attributen sortieren. Eines der Dinge, nach denen Sie jedoch nicht intrinsisch sortieren können, ist die Farbe der Zellen – zumindest nicht ohne ein Update auf Excel 2007 oder höher. Für einige Anwendungen kann dies eine sehr praktische Funktion sein.

Das folgende Makro, SortByColor, sortiert eine Tabelle nach der Farbe, mit der eine Zelle formatiert ist.

Sub SortByColor()

On Error GoTo SortByColor_Err

Dim sRangeAddress As String     Dim sStartCell As String     Dim sEndCell As String     Dim rngSort As Range     Dim rng As Range

Application.ScreenUpdating = False

sStartCell = InputBox("Enter the cell address of the " & _       "top cell in the range to be sorted by color" & _       Chr(13) & "i.e.  'A1'", "Enter Cell Address")



If sStartCell > "" Then         sEndCell = Range(sStartCell).End(xlDown).Address         Range(sStartCell).EntireColumn.Insert         Set rngSort = Range(sStartCell, sEndCell)

For Each rng In rngSort             rng.Value = rng.Offset(0, 1).Interior.ColorIndex         Next         Range(sStartCell).Sort Key1:=Range(sStartCell), _           Order1:=xlAscending, Header:=xlNo, _           Orientation:=xlTopToBottom         Range(sStartCell).EntireColumn.Delete     End If

SortByColor_Exit:

Application.ScreenUpdating = True     Set rngSort = Nothing     Exit Sub

SortByColor_Err:

MsgBox Err.Number & ": " & Err.Description, _       vbOKOnly, "SortByColor"

Resume SortByColor_Exit End Sub

Das Makro fragt zunächst nach der Anfangszelle des Bereichs, den Sie sortieren möchten. Dies sollte die oberste Zelle im Bereich sein. Das Makro fügt dann (nur vorübergehend) eine Spalte ein, in der Farbwerte gespeichert werden können. Anschließend wird jede Zelle in dem Bereich durchlaufen, der durch die von Ihnen angegebene Startzelle definiert ist.

SortByColor geht davon aus, dass Ihre Datentabelle keine Kopfzeile enthält. In diesem Fall sollten Sie den eigentlichen Sortierbefehl ändern. Ändern Sie einfach Header: = xlNo in Header: = xlYes.

Sie sollten beachten, dass das SortByColor-Makro Zellen nur nach der expliziten Farbe sortiert, die auf die Zelle angewendet wird. Es wird nicht sortiert, wenn die Farbe der Zelle das Ergebnis einer bedingten Formatierung ist.

_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 (3122) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: