Roll — attendance tracker

Pro workbook: Month, Summary, Setup, Formulas. Sample data, real formulas.

Attendance
One letter per person per day: P present, A absent, L late, E excused, H holiday. Weekends are shaded. Counts on the right.
MonthSeptember 2026
Days30
Name123456789101112131415161718192021222324252627282930PresentLateAbsentExcusedDaysAttendance
Amina FaroukPPPPPLAPP7110988.9%
Ben LowePPAAPPLPP6120977.8%
Chloé MartinPPPLPPPAP7110988.9%
Daniel ReyesPPPPPPPPP90009100.0%
Eva SørensenPLEPPPPPP7101988.9%
Farid HaddadPPPPPPPPP90009100.0%
Grace OkaforPPPPPPPPP90009100.0%
Hiro TanakaPPLPPLPPE6201988.9%
Ines KowalczykPPPAPAPPP7020977.8%
Jonas WeberPPPPLPAPP7110988.9%
Present per day10108810998990000000000000000000
Group attendance90.0%
Attendance % counts Late as present (they came) and leaves Holidays out of the day count. Below 90% turns red.
Days is the number of days with any mark except H — so unlogged days don't drag the percentage down.
Summary
Everyone ranked by attendance, with the reasons. Sort by any column — the rows are plain references.
NameAttendancePresentLateAbsentExcusedDays logged
Amina Farouk88.9%71109
Ben Lowe77.8%61209
Chloé Martin88.9%71109
Daniel Reyes100.0%90009
Eva Sørensen88.9%71019
Farid Haddad100.0%90009
Grace Okafor100.0%90009
Hiro Tanaka88.9%62019
Ines Kowalczyk77.8%70209
Jonas Weber88.9%71109
GroupValue
Group attendance90.0%
Below 90%7
Most absencesBen Lowe
Best attendanceDaniel Reyes
Setup
The month, the people, the codes, and holidays to grey out.
Month (first day)2026-09-01
NamesCodeMeansHolidays
Amina FaroukPPresent2026-09-07
Ben LoweAAbsent2026-10-12
Chloé MartinLLate
Daniel ReyesEExcused
Eva SørensenHHoliday
Farid Haddad
Grace Okafor
Hiro Tanaka
Ines Kowalczyk
Jonas Weber
Ten name rows. Insert rows inside the block here and on Month/Summary in the same position for more.
Holiday dates grey out the column on Month and are left out of the day count.
How the formulas work
Every formula in this workbook, in plain words. Nothing is hidden and nothing needs a macro. Formulas are shown without the leading = sign.
WhereFormulaWhat it does
Month · Present / Late / Absent / ExcusedCOUNTIF(C6:AG6,"P")One COUNTIF per code across the person's row.
Month · DaysCOUNTA(C6:AG6)-COUNTIF(C6:AG6,"H")Days that have any mark, minus holidays — unlogged days aren't held against anyone.
Month · AttendanceIF(AL6=0,0,(AH6+AI6)/AL6)Present plus Late over days logged. Late still counts as there. IF avoids #DIV/0! before any marks.
Month · Present per dayCOUNTIF(C6:C15,"P")+COUNTIF(C6:C15,"L")How many were in, per column.
Month · weekend shadingConditional format: =WEEKDAY(DATE(YEAR($B$3),MONTH($B$3),C$5),2)>5Rebuilds the date from month + day number; 6 and 7 are Saturday and Sunday.
Month · holiday shadingConditional format: =COUNTIF(Holidays, DATE(YEAR($B$3),MONTH($B$3),C$5))>0If the date is in the Setup holiday list, the column is greyed like a weekend.
Month · code coloursConditional format: =C6="A" → red, ="L" → yellow, ="P" → greenThree rules on the grid; the dropdown (named range Codes) keeps the letters consistent.
Summary · Most absencesINDEX(A5:A14, MATCH(MAX(E5:E14), E5:E14, 0))MAX finds the highest absence count, MATCH its row, INDEX the name.