Education

Spreadsheet work for schools and universities

Timetabling constrained by real availability, and cohort tracking that shows movement rather than a single snapshot.

Get your Excel job done

Send the file, not a brief. No call required.

Education reporting tends to describe a moment — this term's grades, this year's enrolment — when the useful questions are about movement. Which cohort is diverging, which module drives withdrawal, which timetable constraint is actually binding. That is a different data shape: one row per student per period, rather than one row per student.

What we build for this sector

The four engagements that come up most often

Cohort progression tracking

  • Retention and attainment by cohort and term, not by snapshot.

Timetabling models

  • Clash detection and load balancing against real staff availability.

Assessment analytics

  • Module and cohort performance with the assessment calendar alongside it.

Budget and funding models

  • Per-cohort income against delivery cost, by programme.

What the worksheet looks like

The columns that carry the argument

Cohort sheet: one row per student per term, which is what makes progression measurable.
ABCDEFG
1CohortTermEnrolledRetainedRetentionAvg grade
22025 intakeT1184184100.0%62.4
32025 intakeT218417192.9%64.1
42025 intakeT318416388.6%65.8
52026 intakeT1212212100.0%61.0

The calculations behind it

Why each one is written the way it is

  • =COUNTIFS(Enrol[Cohort],[@Cohort],Enrol[Term],[@Term],Enrol[Status],"Active")/COUNTIFS(Enrol[Cohort],[@Cohort],Enrol[Term],"T1") Retention against the cohort's own starting size, not against last term. Chained term-on-term rates hide a slow drift that a cohort baseline makes obvious.
  • =AVERAGEIFS(Grades[Mark],Grades[Module],[@Module],Grades[Term],[@Term]) Module averages by term, so a change in a module is separable from a change in the intake.
  • =SUMPRODUCT((Timetable[Staff]=[@Staff])*(Timetable[Slot]=[@Slot]))>1 Clash detection. A timetable that is only checked by eye will have exactly one clash, and it will be found in week one.
  • =[@[Contact hours]]/[@[Staff FTE]] Teaching load per FTE, the constraint that timetables are usually built without and then rebuilt because of.

The module that was costing a cohort

A worked case from this sector

A department reported healthy overall retention and could not explain a 12-point drop between first and second year. Restructured by cohort and term, the loss concentrated almost entirely after one second-term module with an average 9 marks below the others. The module was not harder in content; its assessment fell in the same fortnight as two others. Moving one deadline recovered most of the gap in the following intake.

Templates to start from

Free, and adaptable to your own data

Need it built around your data?

  • We work in your existing workbook
  • Fixed scope agreed before we start
  • Delivered within 24 hours

Questions from this sector

Specific to this work, not generic

Can you handle student data?

We work with pseudonymised extracts. Cohort and progression analysis needs an anonymous student key, a cohort and a term — not names. That keeps the file outside the scope of most of your data-protection obligations.

Can it replace our student records system?

No, and it should not. The SRS is the system of record; the spreadsheet is the analysis layer over an extract from it. Anything that has to be authoritative belongs in the SRS.

Do you build timetables or just analyse them?

Both, within limits. Clash detection, load balancing and constraint checking work well in a spreadsheet. Full automated timetable generation across a large institution is a solver problem, and we will say so.