I may be missing something, but I'm finding it easy enough to assign workers to new positions as they either clock in or clock up 6 hours in a position, so that all nine positions are close enough to having been equally long occupied after 24 hours, and also nobody has had to move more than once. But perhaps that's the point of it - you just need to use the spreadsheet (with a column for each of the nine positions) to apply a common-sense algorithm assigning workers to positions every two hours. As I say, it seems to be safe to let everyone stay in position for up to 3 rows (2-hour sessions). Then (a) assign new positions for those due their 6-hour change (because their choice of positions is limited). Then (b) assign the new arrivals. Before (a) and before (b) update the number of hours occupied, for each position - so you can always assign to lowest-rated positions.