This is an interesting but not-so-easy task and everybody who tried to do it manually knows about it :-)
Moreover, for the dummy data you supplied only Saturday can be properly scheduled. For instance in Wed you have just 363 persons available (at any time) while you need 486 (=162*3) people.
As for data, I've two additional comments
1) I removed from original file few cells with single space (looks like empty cell) and replaced all texts like half day etc.) with your format hh:mm-hh:mm
2) Of course if somebody is avaliable 13:00-15:00 this person cannot be assigned to any shift 08:00-10:00, 10:00-12:00 etc.
See the attached file (macro is not very quick, so observe status bar - the day macro is working on is displayed there).
What I like about this macro is that it optimizes staff scheduling and starts assigning with least favorable hours, and staff with most restricted availability.
Bookmarks