It isn't necessarily un-normalized (although it could be, depending on the
details). It sounds to me as if each record has a reason, which is OK in
terms of normalization if the reason is selected from a combo box or some
such thing, but is stored in a single field. If there are 15 Reason fields
that would be a different story.
If there is a single Reason field, a Totals query could be used to count the
reason codes. Help has more about Totals queries. In general, create a
query including the date (I will call the field ReasonDate) and the
ReasonCode. Set a critieria for ReasonDate (for instance, put [Enter Date]
in the Criteria row for ReasonDate). Click the Totals icon (sort of a
sideways "M") on the Query Design toolbar. Leave "Group By" in the Total
row for ReasonDate, and change it to Count in the ReasonCode column. Switch
to Datasheet view to see the results. If OK, a report or a form (either
Continuous or Datasheet as the Default View) can be based on the query.