Einleitung

In meinem heutigen Blog-Beitrag möchte ich mich einem häufigen Problem widmen: Wie kann man bedingte Formatierungen in Excel so übertragen, dass sie als dauerhafte Formatierungen erhalten bleiben? Dies ist besonders nützlich, wenn man bedingte Formatierungen kopieren oder in andere Programme exportieren möchte, die keine bedingten Formatierungen unterstützen.

Schauen wir uns vorerst mal die Standardfunktionen von Excel dazu an bzw. wie sich Excel so verhält. Wenn man am selben Tabellenblatt bleibt und den Inhalt der Zwischenablage horizontal bzw. vertikal korrekt ausrichtet, dann scheinen auch die bedingten Formatierungen zu funktionieren. Leider nur auf den ersten Eindruck. Nur die vertikal kopierte bedingte Formatierung (blau) funktioniert korrekt. Die horizontal kopierte bedingte Formatierung (orange) bezieht sich weiter auf die Ausgangstabelle und funktioniert daher nicht korrekt. 

Soweit kann man damit mal nichts anfangen. Schauen wir mal weiter. Es gibt auch beim Kopieren keine spezielle Kopierfunktion, die die bedingten Formatierungen erhält, mal abgesehen von den Grafik bzw. verlinkte Grafik. Damit kann man aber nicht weiterarbeiten. Das geht also auch nicht. 

Also zurück zum Anfang – Es gibt verschiedene Arten von bedingten Formatierungen in Excel (FC.Type = XlFormatConditionType) und innerhalb des Types „xlCellValue“ gibt es noch unterschiedliche XlFormatConditionOperator. Schauen wir uns mal den Type „xlCellValue“ an und versuchen hiermit zu arbeiten. 

Problemstellung

Das Hauptproblem bei bedingten Formatierungen in Excel ist, dass sie dynamisch sind und sich auf Zellbedingungen beziehen. Wenn man versucht, sie zu kopieren oder zu exportieren, gehen die Formatierungsregeln oft verloren. Ich habe festgestellt, dass die Standard-Kopierfunktionen von Excel nicht in der Lage sind, bedingte Formatierungen beizubehalten, insbesondere wenn die Formatierung von anderen Zellen oder komplexen Kriterien abhängt.

Lösungsansatz

Meine Lösung für dieses Problem besteht darin, ein VBA-Skript zu verwenden, das die bedingten Formatierungen analysiert und sie in ‚reale‘, dauerhafte Formatierungen umwandelt. Dieser Ansatz ist besonders nützlich, wenn man mit einer großen Anzahl von Zellen arbeitet oder die Formatierungen in eine andere Anwendung übertragen möchte.

VBA-Code zur Umwandlung von bedingten Formatierungen

Hier ist ein Beispielcode, der zeigt, wie man bedingte Formatierungen in dauerhafte Formatierungen umwandelt. Der Code analysiert die bedingten Formatierungen einer Zelle und wendet dann eine entsprechende dauerhafte Formatierung an.

Anwendung des Codes

Der obige Code kann für jede Zelle in einem ausgewählten Bereich ausgeführt werden, um die bedingte Formatierung in eine dauerhafte Formatierung umzuwandeln. Zum Beispiel:

Sub ApplyRealFormatting()
    Call ConditionalFormattingToRealFormatting(Sheet1.Range("A1:A10"))
End Sub

Einschränkung

Das funktioniert mal schon gar nicht so schlecht:

Das deckt aber nur einen sehr geringen Teil der bedingten Formatierungen ab. Wie sieht es mit Verweisen auf andere Zellen aus? Geht nicht.

Man könnte also hergehen und auch versuchen diese Konstellation abzubilden. Aber das geht dann sehr weit. In meinen Augen ist für diesen Fall besser die Formatierung der Zellen anzuprogrammieren (Worksheet_Change)

Fazit

Dieser Ansatz bietet eine praktikable Lösung für das Problem, bedingte Formatierungen in Excel zu kopieren oder zu exportieren. Es ist wichtig zu beachten, dass dieser Code nur für einfache bedingte Formatierungen funktioniert und möglicherweise angepasst werden muss, um komplexere Szenarien zu unterstützen.