Ok, have a look at the attachment.
I have added a helper column in the CS Events List sheet. This concatenates the date with the number consecutive count of that date, using this formula (this column can be hidden after). This will help us separate an event per row, so you should not get two events in any one row:
=B4&"_"&COUNTIF(B$4:B4,B4)
copied down.
In the Weekly calendar, I have expanding the daily number of rows to 8. This will accomodate for a blank first row and 7 potential independent events (1 per row)
The formula in E8 at the top left corner is:
=IFERROR(INDEX(CSEvents[[Event Name]:[Event Name]],MATCH(1,INDEX((CSEvents[[Date of Event]:[Date of Event]]= $C8)*(CSEvents[[Start Time]:[Start Time]]<=E$6)*(CSEvents[[End Time]:[End Time]=]=>=E$6)*(CSEvents[[Helper]:[Helper]]=$C8&"_"&MOD(ROWS($A$8:$A8),8))*(ISNUMBER(MATCH(CSEvents[[Calendar Entry]:[Calendar Entry]],$M$2:$M$5,0))),0),0)),"")
copied across and down the whole table.
For the conditional formatting, I used another helper column in Weekly Calendar sheet to identify the associated event, based on the helper I used in the CS Events sheet and respective row number we are in...
Helper formula here is, starting in AE8 (this column can be hidden after):
=INDEX(CSEvents[Kind of Event],MATCH($C8&"_"&MOD(ROWS($A$8:$A8),8),CSEvents[Helper],0))
Now the separate conditional formats are simple:
For Other (Pink): =AND(E8<>"",$AE8="Other")
For Meeting (Purple): =AND(E8<>"",$AE8="Meeting")
For Product Launch (Blue): =AND(E8<>"",$AE8="Product Launch")
For Training (Green): =AND(E8<>"",$AE8="Training")
Hope this meets with your approval.