おそらく…
テキストとして取り出す値と,内部で保持する値が異なるのが原因ではないかと.

D列の小数点以下の表示桁数を増やすと,途中から0が並ぶようになりますが,
内部で保持するデータはIEEE754に基づくはずなので,あと1〜2桁多くなります.
たとえばD16セルは表示桁数を増やすと,「1.00318471337580000…」になると思いますが,
内部では「1.003184713375796300…」といった具合です.
COUNTIF関数の条件式ではおそらく前者の数値表現を持ってくる仕様で,
実際に比較する場合は後者の数値を持ってくるため,
当該セルも「真に小さい」という条件が成立してしまいます.

仕様上,こういった場当たり的に見える処理が多々あるので,
浮動小数点の比較などには数値計算上のテクニックが必要となります.