By the time I read your clarification (and simplification) it was way past my bed time. Similar to Richard's suggestion, here's how I would do it.
But before I share how, keep in mind one thing. About the impossibility bit
To see 50 parents, a teacher must spend 50*5 or 250 minutes. That's 4 hours and 10 mins. Can't be done in the 1:00 to 3:30 p.m. time slot. Of course, if the 5 teachers saw 50 parents using *both* time periods, it could be done. But, then, you'd have a student-teacher ratio of 10-to-1; that would rival the most 'sought after' schools!
Be that as it may, I would lay out and schedule parents in blocks of 5 (or as many teachers as they typically meet).
Put the names of the students in column A, starting with A2. Put the names of the 5 teachers in row 1 starting with B1.
Select B2,C3,D4,E5,F6 (CTRL-click to select multiple non-contiguous cells). Type 1:00 pm (or 13:00 if using a 24 hour clock). Use CTRL-ENTER rather than just ENTER to complete data entry.
Next, select C2,D3,E4,F5,A6. Enter 1:05 pm.
Basically, enter the same time down the diagonal wrapping around to the first column when you get to the last column.
This guarantees an unique schedule for the first group of student-teacher meetings.
Now repeat for the each subsequent block of 5 (or as many teachers are met by each parent) students using a start time of the previous time + {number of teachers * duration of each meeting}. In this case, it will be 25 mins.
If a particular parent will not meet a particular teacher, leave that slot blank. Don't try to optimize the schedule.
The code below does just that. It works with any number of teachers and any number of students. In the XL VBE, enter it in a standard module of a workbook. Get back to XL and save the workbook as, say, Parent-Teacher-Sched.xls. Create a new workbook and run SchedManager (Tools | Macro > Macros... | 'parent-teacher-sched.xls'!schedManager. It has been tested with combinations of 50 students & 5 teachers, 18 & 6, and 15 & 6.
<pre>
Option Explicit
Function getARng(startCell As Range, direction) As Range
If startCell.Value = "" Then
Set getARng = Nothing
ElseIf startCell.Offset(-1 * CInt(direction = xlDown), _
-1 * CInt(direction = xlToRight)).Value = "" Then
Set getARng = startCell
Else
Set getARng = Range(startCell, startCell.End(direction))
End If
End Function
Function getStartingTime() As Date
On Error Resume Next
Err.Clear
getStartingTime = Application.InputBox("Enter starting time either in 24 hour format (13:00)" _
& vbNewLine & "or with am/pm (1:00 pm)", , "13:00", , , , , 1)
On Error GoTo 0
If Err.Number <> 0 Then
MsgBox "Please enter the time in hh:mm format only"
End If
End Function
Function sameTimeSlots(startCell As Range, _
ByVal NbrTeachers As Integer, _
thisPos As Integer) As Range
Dim rslt As Range, i As Integer
Set rslt = startCell.Offset(0, thisPos)
For i = 1 To NbrTeachers - 1
Set rslt = Union(rslt, startCell.Offset(i, (thisPos + i) Mod NbrTeachers))
Next i
Set sameTimeSlots = rslt
End Function
Sub doOneBlock(ByVal startCell As Range, _
ByVal NbrTeachers As Integer, _
StartTime As Date)
Dim i As Integer
For i = 0 To NbrTeachers - 1
With sameTimeSlots(startCell, NbrTeachers, i)
.Value _
= StartTime + TimeSerial(0, i * 5, 0)
.NumberFormat = "h:mm;@"
End With
Next i
End Sub
Sub doSched(ByVal startCell As Range, ByVal NbrTeachers As Integer, _
NbrStudents As Integer, ByVal StartTime As Date)
Dim i As Integer
For i = 0 To NbrStudents - 1 Step NbrTeachers
doOneBlock startCell.Offset(i, 0), NbrTeachers, StartTime
StartTime = StartTime + TimeSerial(0, NbrTeachers * 5, 0)
Next i
End Sub
Sub schedManager()
Dim TeacherRng As Range, StudentRng As Range, _
vStartTime As Variant, StartTime As Date
Set TeacherRng = getARng(Range("b1"), xlToRight)
Set StudentRng = getARng(Range("a2"), xlDown)
If TeacherRng Is Nothing Or TeacherRng.Cells(TeacherRng.Cells.Count).Column = 256 Then
MsgBox "List of teachers is missing"
Exit Sub
End If
'MsgBox TeacherRng.Address & ", " & StudentRng.Address
StartTime = getStartingTime
'MsgBox StartTime
doSched Range("b2"), TeacherRng.Cells.Count, _
StudentRng.Cells.Count, StartTime
End Sub
</pre>