Sub Room_Occupancy()
Dim a, b
Dim rws As Long, i As Long, j As Long, Dy As Long, Rm As Long, Nights As Long
Const CI As String = "D" '<- Check In column
Const TopLeftResult As String = "M2" '<- Where results should start
Const FR As Long = 2 '<- First data row
Const NumRooms As Long = 4 '<- No. of rooms
ReDim b(1 To 31, 1 To NumRooms * 2)
rws = Range(CI & Rows.Count).End(xlUp).Row - FR + 1
a = Range(CI & FR).Resize(rws, 4).Value
For i = 1 To rws
Dy = Day(a(i, 1))
Rm = a(i, 3)
Nights = a(i, 4)
b(Dy, Rm * 2) = "C"
For j = 1 To Nights
b(Dy + j - 1, Rm * 2 - 1) = b(Dy + j - 1, Rm * 2 - 1) + 1
Next j
Next i
Range(TopLeftResult).Resize(31, NumRooms * 2).Value = b
End Sub