Ciao!
Ho appena fatto una cosa molto simile a quella che serve a te, in pratica il concetto che ho usato è questo:
1 . divido la giornata lavorativa intervalli di 15 minuti.
2 . faccio un ciclo for per ogniuno di questi intervalli in cui la variabile contatore moltiplica il mio intervallo base(15 minuti) e tramite lui controllo se è compreso nell'ora inizio e fine del corso di cui devo stampare la giornata.
Se è compreso allora stampo una cella rossa, altrimenti la stampo verde.
Se ti può servire ti posto tutta la funzione(un po' incasinata) ma fa esattamente quello che serve a te su una base dati quasi uguale alla tua, segnando orari di inizio e di fine!