Your "Format$" function are not returning dates, they are returning years (in Text format). So you still want to apply criteria to the underlying dates.
Try this:
Code:
SELECT DISTINCTROW Format$([Nominal Rolls].[Date In],'yyyy') AS [Date In By Year], [Nominal Rolls].Program, Count(*) AS [Count Of Nominal Rolls]
FROM [Nominal Rolls]
WHERE (([Nominal Rolls].[Date In]>#4/1/2016#) And ([Nominal Rolls].[Date In]<#3/31/2017#))
GROUP BY Format$([Nominal Rolls].[Date In],'yyyy'), [Nominal Rolls].Program;
Edit: Yeah, what Paul said!