AFAIK, the criteria in COUNTIF function only supports number and text. That is, criteria like "> today()" and "> 4/4/2006" are not supported (not rejected, but simply return wrong answer).

Assumption:
The range containing expiration dates is G2:G116

First, add a (hidden) K2:K116 range with these series of formula
= AND(G2 > TODAY()+7, G2 < TODAY()+21)
...
= AND(G116 > TODAY()+7, G116 < TODAY()+21)
which returns TRUE or FALSE.

Now you can set up a cell with this formula
= COUNTIF(K2:K116, TRUE)

Hope you get the idea.

Peace always,
<jdenny>