Is the table design
ID (autonumber)
Date (Date/Time) ' <-- Date is a reserved word and shouldn't be used as an object (field) name. Plus, it is not very descriptive: "Date" of what??
Task1 (Text)
Task2 (Text)
Task3 (Text)
.
.
.
Task20 (Text)
If yes, then you have "Committed spreadsheet". That is to say, your table design is like a spreadsheet - short and wide. Access tables usually are tall and narrow. Your table is not normalized.
You might try (untested)
Code:
SELECT Count(Task1) AS Count_T1, Count(Task2) AS Count_T2, Count(Task3) AS Count_T3, Count(Task4) AS Count_T4, ... through all tasks
FROM displayDataLastMonth
WHERE (((displayDataLastMonth.[Task1])="Not Good")) OR (((displayDataLastMonth.[Task2])="Not Good")) OR (((displayDataLastMonth.[Task3])="Not Good")) OR (((displayDataLastMonth.[Task4])="Not Good")) ... through all tasks ;
Also, with this kind of structure, if you add another task (because we all know the number of tasks will always change) you will have to change the table(s), forms, queries, reports and possible the VBA code! 
In a normalized table structure, the table might look like:
ID (autonumber)
Date (Date/Time) ' <-- Date is a reserved word and shouldn't be used as an object (field) name
TaskName (Text) ' example "Task1", "Task2"
TaskStatus ' example "Good", "Not Good"
Then the count query is trivial.