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>