Danke für die super Erklärung… wow 1000x mal schneller 
Hallo Flexo,
das ist das was ich schon gelegentlich in Antworten gelesen habe.
Ich habe auch gelesen daß z.B. eine For-Schleife 10 mal schneller sein soll als eine Do-Schleife.
Zum selbst Testen von sowas kannst du ja grundsätzlich z.B. so vorgehen:
Dim T as Single
T=Timer
'Hier deine For-Schleife
msgbox Timer-T
T=Timer
'Hier die Countif-Zeile von Thomas
msgbox Timer-T
Mit so einem Grundvorgehen kannst du auch mal selbst testen was z.B. bei anderen Codes Application.Screenupdating=False/True in der Realität so „bringt“.
Und wenn du das wie ich für dich selbst wissen/austesten willst,
bau um das ganze eine For-Schleife , werfe die Msgbox raus und laß dir die Zeiten in die Exceltabelle eintragen und lasse es so 100, 200 mal laufen.
Denn ich als Laie weiß nicht was exakt genau grad in dem Moment des Codelaufs Windows so treibt.
Vielleicht läuft grad in einer anderen Mappe das Addin „Automatisches Speichern“, irgendein anderes Programm wird grad heimlich aus dem Internet upgedatet oder sonst was.
Das kann bedeuten daß zur laufzeit des Codes für Excel grad wenig Ressourcen zur Verfügung stehen.
Wie auch immer, ich habe derart schon oft etwas getestet, verglichen was schneller ist, ich muß dir sagen da gibt es verblüfende Ergebnisse. Bis hin zur Uneinheitlichung welche Variante schneller ist, sprich, manchmal war auch die vermeintlich langsamere schneller oder gleichschnell.
Und, die Ergebniszeiten sind sehr oft die „gleichen“
Also nicht so Zeiten
3,12456
3,27645
2,9787
2,87642
sondern
3,12456
3,12456
2,87642
2,87642
Verstanden habe ich das bislang noch nicht. Scheinbar liegt es an den „Zeitsprüngen“ von/im Timer. Denn dies erinnert mich sehr stark an die Zellhöhen in Excel.
Dort kannst du/ich schon in einer For schleife angefangen von A1 nach unten den Zellen unterschiedliche Zellhöhen „verpassen“.
Auch da kristallisieren sich bestimmte Zahlenwerte heraus, alle anderen kann Excel nicht darstellen.
Nach einer geheimnisvollen Rundungslogik rundet Excel also alle Werte ab oder ggfs auch auf.
Bei Zellhöhen verstehe ich es ja leicht daß wenn ich sage
.Rowheight=2.2345678
daraus dann
.Rowheight=2.235
gemacht hat weil es „kleiner“, also die x-te Nachkommastelle, nicht umsetzen kann.
Wenn dies also beim Timer genauso ist, was ich glaube, so ist einiges geklärt aber nicht alles 
Naja, spiel, teste selbst dann verstehst du was ich meine.
Gruß
Reinhard