Locking the nonexistent days is the clever part, since it makes the >100% bug impossible instead of just hiding it. One thing to watch in the current month: dividing by DAY(EOMONTH()) makes your rate look low until the month ends, so a second column with COUNTIF(row,TRUE)/MIN(DAY(TODAY()),DAY(EOMONTH(B1,0))) gives a fair "so far" number. For Excel, EOMONTH behaves the same, but checkbox cells may come back as TRUE/FALSE or 1/0 depending on how they're inserted, so COUNTIF on TRUE is worth retesting there.
Kendeepp