Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sortieren mit bedingten Formatierungen

Forumthread: Sortieren mit bedingten Formatierungen

Sortieren mit bedingten Formatierungen
22.02.2017 19:28:27
Andreas
Hallo,
Ich habe mal wieder ein Problem.
Ich habe einen Kalender für ein Dienstplan erstellt. Die Samstage, Sonn- und Feiertage werden durch bedingte Formatierungen farblich gekennzeichnet. Die Dienste werden über VBA mit festen Farbformatierungen eingetragen. Dabei werden die bedingten Formatierungen wieder gelöscht, weil sonst die festen an Samstagen Sonn- und Feiertagen durch die bedingten nicht angezeit werden. Wird ein Dienst wieder (per VBA) gelöcht, wird die bedingte Formatierung wieder auf die Zelle kopiert.
Bis hier funtioniert alles einwandfrei.
Wenn ich aber die Tabelle sortiere (auch über VBA) entsteht in den Formatierungen Chaos, da die bedingten Formatierungen nicht mitsortiert werden sondern ihre Position behalten.
Wie können die bedingten Frmatierungen mit sortiert werden?
Hier einer meiner Sortiercodes:

Private Sub Absteigend()
Dim Zeilenanzahl As Integer
Worksheets("Dienstplan").Unprotect
Zeilenanzahl = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row 'letzte Zeile in Spalte B suchen
If ActiveSheet.Name  "Dienstplan" Then Exit Sub
If ActiveCell.Column > 1 And ActiveCell.Column  5 Then
ActiveWorkbook.Worksheets("Dienstplan").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Dienstplan").Sort.SortFields.Add Key:=ActiveCell _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Dienstplan").Sort
.SetRange Range(Cells(9, 2), Cells(Zeilenanzahl, 764))       '("B9:ACJ83")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Worksheets("Dienstplan").Protect
End Sub

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortieren mit bedingten Formatierungen
22.02.2017 20:28:22
MB12
Hallo Andreas,
ich erfasse bei kritischen Dateienn, die sich oft ändern, alle bedingten Formatierungen per Makro, das ich am Ende des anderen Codes ablaufen lasse - sprich, zuerst alle bedingten Formatierungen löschen, dann neu anlegen.
Gruß, Margarete
AW: Sortieren mit bedingten Formatierungen
22.02.2017 20:38:07
Andreas
Hallo Margarete,
danke für die Antwort.
So was ähnliches habe ich mir auch schon überlegt. Nur muss ich dann auch bei allen Zellen in denen ein Dienst eingetragen ist auch die bedingte Formatierung wieder löschen, da sonst die eigentliche Dienstfarbe (Zellenformatierung) nicht gezeitg wird. Das heist bei jeden Sortiervorgang muß die komlette Tabelle neu formatiert werden, was den Sortiervorgang verlangsamt.
Gib es denn keine Möglichkeit die bedingten Formatierungen mitsortieren zu lassen?
Gruß Andreas
Anzeige
AW: ich kenne keine,...
23.02.2017 16:39:33
MB12
.., Andreas, aber wenn du per VBA sortierst, dann passe wie beschrieben deinen Code an - vielleicht hilft dir hier ja jemand. Nach deiner Beschreibung musst du ja eh einen Teil der bedFor bei Änderungen löschen.
Ich stelle mal den Beitrag auf offen.
Gruß, Margarete
Offen! Das hast du nicht getan, MB! ;-) owT
23.02.2017 20:29:18
Luc:-?
:-?
AW: Offen! Danke Luc :-) owT
24.02.2017 16:44:06
MB12
.
Anzeige
AW: Offen! Danke Luc :-) owT
24.02.2017 16:44:24
MB12
.
AW: Sortieren mit bedingten Formatierungen
25.02.2017 22:45:40
Piet
Hallo Andreas,
hallo Margarete
ich denke ich habe jetzt verstanden Warum sich die bedingte Formatierung nicht sortieren laesst!
Das Thema ist für mich Neuland, ich habe damit nie gearbeitet, kenne aber Excel Besonderheiten!
Beim Einrichten der Bedingten Formatierung setzt Excel üblicherweise die Zellangabe in $$ Zeichen.
Dabei handelt es sich um Absolute Bezüge, nicht um Relative Adressen. Absout ist m.W. nicht verschiebbar.
Wenn das stimmt ist eine Lösung die Formatierung mit dem Makro Recorder aufzeichnen, im aufgezeichneten
Makro mit Replace alle $$ zu löschen, und dann das Makro mit jetzt Relativen Adressen noch mal auszuführen!
Probiert es bitte einmal in einer Testdatei aus. Aber bitte nicht im Original! Ich weiss ja nicht ob es klappt?
mfg Piet
Anzeige
AW: Sortieren mit bedingten Formatierungen
28.02.2017 19:56:29
MB12
Hallo Andreas und Piet,
es ist richtig, dass Excel absolute Bezüge setzt, wenn man mit den voreingestellten Regeln arbeitet. Aber auch hier kann man über ""Regeln verwalten"" zumindest teilweise die dahinter stehenden Formeln bearbeiten. Die kann man erkennen, wenn man das Anlegen der bedForm per Makrorecorder aufzeichnet (siehe Code unten).
So gesehen ist dein Ansatz vermutlich korrekt, Piet: Also $-Zeichen bei den Zeilen raus.
Ich definiere bei aufwendigeren Dateien immer die Formeln manuell. Nachher nochmal auf "verwalten" gehen, damit man eventuelle Excel-Automatismen überlistet.
Trotzdem arbeite ich mit Makros, denn wenn man z.B. manuell etwas verschiebt und nicht den gesamten Bereich erwischt, erstellt Excel automatisch neue Regeln, die aber oft nicht funktionieren.
Hier mal ein gekürztes Makro mit zwei bed.For., das ich in bestimmten Abständen durchlaufen lasse:
Sub Main_1()
Dim varArray As Variant
Dim strSheet As String
Dim lngTMP As Long
'On Error GoTo Fin
Application.ScreenUpdating = False
strSheet = ThisWorkbook.ActiveSheet.Name
varArray = Array("Fertigung", "Techn.Montage")
For lngTMP = LBound(varArray) To UBound(varArray)
With ThisWorkbook.Worksheets(varArray(lngTMP))
If .FilterMode Then .ShowAllData
.Range("B6:B49").Font.Size = 14
'************erst mal alle alten bedingten Formatierungen löschen:
.Cells.FormatConditions.Delete
'************danach neu definieren:
With .Range("A6:H49")
.FormatConditions.Add Type:=xlExpression, Formula1:="=$D6=""x"""
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Interior
.ColorIndex = 19
End With
.FormatConditions(1).StopIfTrue = False
End With
With .Range("A6:L49")
.FormatConditions.Add Type:=xlExpression, Formula1:="=$M6=""na"""
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Interior
.ColorIndex = 15
End With
.FormatConditions(1).StopIfTrue = False
End With
Application.Goto .Range("A1"), True
End With
Next lngTMP
End Sub
Gruß, Margarete
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Sortieren mit bedingten Formatierungen in Excel


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Daten: Stelle sicher, dass deine Excel-Tabelle die notwendigen Daten enthält und die bedingten Formatierungen korrekt angewendet wurden.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul erstellen:

    • Klicke im Menü auf Einfügen und wähle Modul.
    • Füge den Sortiercode ein, den du bereits hast oder erstelle einen neuen.
  4. Bedingte Formatierungen anpassen: Um sicherzustellen, dass die Formatierungen beim Sortieren beibehalten werden, solltest du die Zellbezüge in den bedingten Formatierungen überprüfen. Verwende relative Bezüge, indem du die $-Zeichen entfernst.

  5. Sortiercode anpassen: Stelle sicher, dass der Sortiercode die richtigen Bereiche abdeckt, und führe den Code aus. Hier ein Beispiel für eine Anpassung deines Codes:

    Private Sub Absteigend()
       Dim Zeilenanzahl As Integer
       Worksheets("Dienstplan").Unprotect
       Zeilenanzahl = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
       If ActiveSheet.Name <> "Dienstplan" Then Exit Sub
       If ActiveCell.Column > 1 And ActiveCell.Column < 5 Then
           ActiveWorkbook.Worksheets("Dienstplan").Sort.SortFields.Clear
           ActiveWorkbook.Worksheets("Dienstplan").Sort.SortFields.Add Key:=ActiveCell, _
               SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
           With ActiveWorkbook.Worksheets("Dienstplan").Sort
               .SetRange Range(Cells(9, 2), Cells(Zeilenanzahl, 764))
               .Header = xlGuess
               .MatchCase = False
               .Orientation = xlTopToBottom
               .SortMethod = xlPinYin
               .Apply
           End With
       End If
       Worksheets("Dienstplan").Protect
    End Sub
  6. Makro ausführen: Führe das Makro aus, um deine Tabelle zu sortieren und beobachte, ob die bedingten Formatierungen korrekt übernommen werden.


Häufige Fehler und Lösungen

  • Bedingte Formatierungen werden nicht sortiert: Überprüfe, ob deine Formatierungen auf absolute Zellbezüge gesetzt sind. Ändere diese in relative Bezüge, um das Problem zu beheben.

  • Makro funktioniert nicht: Stelle sicher, dass das Makro in der richtigen Arbeitsmappe ausgeführt wird und dass die Tabelle nicht geschützt ist.

  • Sortierreihenfolge stimmt nicht: Achte darauf, dass deine Sortierkriterien korrekt definiert sind, insbesondere die Spalte, nach der sortiert werden soll.


Alternative Methoden

  • Bedingte Formatierungen per Makro neu anlegen: Du kannst ein Makro erstellen, das die bedingten Formatierungen löscht und sie anschließend erneut anwendet. Dies kann bei komplexen Tabellen sinnvoll sein.

  • Manuelle Anpassung: Du kannst auch manuell die bedingten Formatierungen anpassen, bevor du die Sortierung vornimmst. Dies kann jedoch zeitaufwändig sein.


Praktische Beispiele

  • Beispiel für eine einfache bedingte Formatierung: Wenn du in einer Zelle einen bestimmten Wert hast und diese Zelle grün hinterlegt werden soll, könntest du folgende bedingte Formatierung verwenden:

    With Range("A1:A10")
       .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=1"
       .FormatConditions(1).Interior.Color = RGB(0, 255, 0)
    End With
  • Sortieren und gleichzeitig Formatierungen beibehalten: Nutze den oben genannten Sortiercode und kombiniere ihn mit der Neuanlage der bedingten Formatierungen nach dem Sortieren.


Tipps für Profis

  • Verwende einheitliche Formate: Halte deine Formatierungen einheitlich, um Verwirrung zu vermeiden, insbesondere wenn du mit mehreren Benutzern arbeitest.

  • Regeln verwalten: Überprüfe regelmäßig die bedingten Formatierungen in Excel, um sicherzustellen, dass sie wie gewünscht funktionieren.

  • Backup deiner Datei: Bevor du große Änderungen vornimmst, erstelle immer ein Backup deiner Excel-Datei, um Datenverlust zu vermeiden.


FAQ: Häufige Fragen

1. Kann ich bedingte Formatierungen in Excel 2016 sortieren? Ja, du kannst bedingte Formatierungen in Excel 2016 sortieren, solange die Zellbezüge korrekt eingestellt sind.

2. Was sind absolute und relative Zellbezüge? Absolute Zellbezüge (mit $-Zeichen) verweisen immer auf eine feste Zelle, während relative Zellbezüge sich je nach Position der Zelle ändern.

3. Wie kann ich die Performance beim Sortieren verbessern? Minimiere die Anzahl der bedingten Formatierungen und optimiere deine VBA-Skripte, um die Ausführungsgeschwindigkeit zu erhöhen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige