Autor: Peter Haserodt  --- Aus Excel Standard - Gruppe: Tutorials

!Langsames Excel (2) - Bedingte Formatierung

Autor: Peter Haserodt - Erstellt: ?      - Letzte Revision: ?Gruppenthema: 3 Folgen 1 2 3 Sie sind in Folge:2

Bedingte Formatierung volatil?

Hinweis:

Sie sollten unbedingt den ersten Teil dieses Tutorials gelesen haben, denn sonst wird Ihnen vieles nicht verständlich.

Die bedingte Formatierung ist hier beschrieben:
Bedingte Formatierung (1) - Grundlagen

Im ersten Teil haben wir uns mit volatilen Funktionen beschäftigt.
Wie sieht dies aber in bedingten Formatierungen aus?

Ich gestehe, als ich anfing dies zu untersuchen, hatte ich eine vorgefasste Meinung, dass dies so ähnlich wäre wie in Zellformeln.
Was ich aber dann ermittelte, traf mich wie ein Schlag.
Die bedingte Formatierung hat nichts mit volatilen Funktionen zu tun, sondern ist im höchsten grade selbst volatil, wenn auch in einem ganz anderem Zusammenang als Zellformeln.
Gehen Sie mit mir - und staunen.

Fühlen und wundern!

Bevor ich das ganze mit VBA etwas direkter visualisiere, hier ein reiner Exceltest, der auf gefühlter Langsamkeit beruht.

Wie immer schließen Sie alle anderen Mappen und erzeugen Sie eine neue leere Mappe.
Fügen Sie dann in Spalte A in den Zellen A1 bis A3000 die Werte 1 bis 3000 ein.
Bevor wir zur bedingen Formatierung kommen, machen wir einen kleinen Langsamkeitstest:


 ABC
11  
22 1000
33  

Formeln der Tabelle
ZelleFormel
C2{=SUMME(1/ZÄHLENWENN(A1:A1000;A1:A1000))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Testen Sie jetzt, wie langsam eine Veränderung in Spalte A sich darstellt, gefühlt.
Ist es sehr langsam, reduzieren Sie den Bereich in der Formel (Achtung, 2 mal vorhanden)
Merken Sie es nicht richtig, dann halt erhöhen. Sie sollten es wirklich spürbar merken.

Haben Sie die richtige Bereichsgröße ermittelnt, dann merken Sie sich diese und löschen dann die Formel !!!
Dann stellen Sie eine bedingte Formatierung mit Ihrem ermitteltem Bereich analog folgendem Beispiel:


 ABC
11  
22 4000
33  

Bedingte Formatierungen der Tabelle
ZelleNr.: / BedingungFormat
C21. / Formel ist =C2>SUMME(1/ZÄHLENWENN(A1:A1500;A1:A1500))Abc


Jetzt fangen wir an zu testen:


Minimieren Sie die Arbeitsmappe und maximieren Sie sie wieder.
Können Sie schlafen gehen?
Wechseln Sie zu einem anderem Tabellenblatt und wieder zurück.

Sie sollten wirklich merken, wie langsam es ist!
Wir haben nichts verändert, trotzdem wurde die Berechnung angestoßen.

Jetzt srollen Sie in Einzelschritten nach unten, bis die Zeile 5 nicht mehr sichtbar ist.
Dies sollte keine Verlangsamung auswirken.
Jetzt scrollen Sie in Einzelschritten nach oben, aber halt, nur mit mir:
Einmal nach oben: Zeile 4 wird sichtbar, es sollte nicht langsam sein.
Nochmal, Zeile 3 wird sichtbar und langsam.
Nochmal, Zeile 2 wird sichtbar und langsam.
Nochmal, Zeile 1 wird sichtbar und langsam.
(Bei einigen Aktionen kann es passieren, dass es so aussieht, als würden zwei Zellen noch rot sein)

Scrollen Sie nun soweit nach unten, bis die Zelle C2 nicht mehr sichtbar ist.
Geben Sie jetzt in irgendeine Zelle (Außerhalb von Spalte A) etwas ein -> Es ist schnell.
Jetzt wieder hochscrollen bis sichtbar.
Dann in irgendeine Zelle etwas eingeben -> Langsam.

Analyse:

Die bedingte Formatierung verhält sich vollkommen pervers - oder doch nicht?
Sie wird bei jeder Bildschirmaktualisierung ausgelöst, wenn die Zelle im sichtbaren Bereich liegt!


Beim scrollen sogar dann, wenn die benachtbarten Zellen in den sichtbaren Bereich kommen.

Diese Bildschirmaktualisierung wird bei vielen vielen Aktionen von Excel durchgeführt.
Zum Beispiel nach dem Schließen von Userformen, in Excel 2007 sogar nach gewissen Fenstern für Einstellungen.

Und wer denkt, dass er dies verhindern kann, indem er die automatische Berechnung auf manuell stellt, der hat sich gewaltig geschnitten. Dies interessiert die bedingte Formatierung überhaupt nicht.
Testen Sie nun selber weiter, bevor ich noch mehr dazu sage.

Fazit:
(Hinter diesem Fazit kommt noch etwas für die VBA-ler)

Die bedingte Formatierung hat es an sich und in sich wie wir gesehen haben.
Vermeiden Sie also bedingte Formatierungen, die in ihrer Berechnung langsam sind.
Oder viele sichtbare bedingte Formatierungen, die in der Summe ihrer Berechnungen langsam sind.

Beachten Sie auch, dass Bildschirme immer größer werden und immer mehr Zellen im sichtbaren Bereich liegen.
Aber simple bedingte Formatierungen sind für unsere heutigen Rechner m.E. kein Problem.
(z.B. ein Blatt karotieren wie in <a href='http://www.online-excel.de/excel/singsel.php?f=47'>Karo Zellen</a> beschrieben, obwohl über ein ganzes Blatt gezogen, machen da nicht viel aus nach meinem Ermessen)

Hauptsache, ich konnte Ihnen dies etwas näher bringen.

Ein kleiner Test mit VBA

Man kann sich auch einen kleinen VBA Test selber schreiben, um einige Dinge herauszufinden.
Sie sollten aber damit umgehen können. Es empfiehlt sich, die MsgBox beim beenden auszukommentieren, sonst hat man beim Öffnen der Mappe immer jede Menge Meldungen.

Hier ein Beispielcode:
Option Explicit
Public Function BedingtTest(DerRange As Range) As Boolean
BedingtTest = DerRange.Value > 5
MsgBox "BedingtTest"
End Function
Und im Tabellenblatt:
Tabelle1

 ABC
1   
2 7 
3   

Bedingte Formatierungen der Tabelle
ZelleNr.: / BedingungFormat
B21. / Formel ist =BedingtTest(B2)Abc


Beachten Sie, dass die MsgBox Sie richtig nerven kann

Aber Sie werden sehen, wie oft diese auftaucht.

Und wenn Sie den Platzt mal für eine Weile verlassen, können Sie sich richtig durchklicken.

Viel Spass!

Fragen stellen im Online-Excel Forum

Neu in Online-Excel: Online-Excel Newsletter

Dieses Thema hat weitere Beiträge

!Langsames Excel (1) - Volatile Funktionen
!Langsames Excel (2) - Bedingte Formatierung
!Langsames Excel (3) - Kamerafunktion

Weitere Artikel der Gruppe: Tutorials Aus Excel Standard
Nach oben