Attendance tracker (Excel template)

Attendance trackers in Excel go wrong in the arithmetic, not the typing. So this one does the sums for you: type the shift start, the check-in and the check-out, and the sheet works out late minutes and working hours on every row. A small summary block turns the month into an attendance rate and an on-time rate.

Use it for a team of up to a few dozen people whose times you collect by hand or from a device export. One row is one person on one date. For a printable roll with one mark per day, the attendance register is simpler; for a one-line-per-person month end, use the monthly attendance summary.

ATTENDANCE TRACKER
Company: [COMPANY NAME]
Month: [MONTH AND YEAR]
Expected working days this month: [EXPECTED DAYS]

SHEET 1 - DAILY LOG (row 1 is the header)
A Date | B Name | C Shift start | D Check in | E Check out | F Unpaid break (min) | G Late minutes | H Working hours | I Status | J Note
[DATE] | [EMPLOYEE NAME] | [SHIFT START] | [CHECK IN] | [CHECK OUT] | [BREAK MINUTES] | formula | formula | [STATUS] | [NOTE]
[DATE] | [EMPLOYEE NAME] | [SHIFT START] | [CHECK IN] | [CHECK OUT] | [BREAK MINUTES] | formula | formula | [STATUS] | [NOTE]
[DATE] | [EMPLOYEE NAME] | [SHIFT START] | [CHECK IN] | [CHECK OUT] | [BREAK MINUTES] | formula | formula | [STATUS] | [NOTE]

FORMULAS FOR ROW 2 (type once, then fill down)
G2 Late minutes:   =IF(D2="","",MAX(0,ROUND((D2-C2)*1440,0)))
H2 Working hours:  =IF(OR(D2="",E2=""),"",ROUND(MOD(E2-D2,1)*24-F2/60,2))

STATUS CODES (column I)
P = present, full day
PT = partial day (in, but short of the shift)
A = absent
L = on approved leave
H = company holiday

SHEET 2 - MONTHLY SUMMARY (one row per person; name in A2)
Name | Days present | Days absent | Leave days | Late arrivals | Late minutes | Hours worked | Attendance rate | On-time rate
[EMPLOYEE NAME] | =COUNTIFS(Sheet1!B:B,A2,Sheet1!I:I,"P")+COUNTIFS(Sheet1!B:B,A2,Sheet1!I:I,"PT") | =COUNTIFS(Sheet1!B:B,A2,Sheet1!I:I,"A") | =COUNTIFS(Sheet1!B:B,A2,Sheet1!I:I,"L") | =COUNTIFS(Sheet1!B:B,A2,Sheet1!G:G,">0") | =SUMIFS(Sheet1!G:G,Sheet1!B:B,A2) | =SUMIFS(Sheet1!H:H,Sheet1!B:B,A2) | =B2/[EXPECTED DAYS] | =1-E2/B2

What to put in each blank

[EXPECTED DAYS]
Count the working days in the month after weekly days off and company holidays. Type the number into the attendance rate formula too.
[SHIFT START]
Type the start of that person's own shift as a time, like 09:00. Late minutes are measured against it, never against one office-wide opening time.
[CHECK IN]
Type the first punch or sign-in of the day as a time. Leave it empty on an absent day and the formulas stay blank.
[CHECK OUT]
Type the last punch of the day. A check-out after midnight still works, because the formula wraps past 24:00.
[BREAK MINUTES]
Enter the unpaid break in minutes, or 0 when breaks are paid.
[STATUS]
Pick one code from the status list. Use PT when someone came in but left well short of the shift.

Before you send it

  • Format columns C, D and E as Time before you type into them. A time typed into a General cell turns into text, and every formula on that row returns an error.
  • To copy the layout, paste the header and rows into column A, then split on the | character. In Excel that's Data, Text to Columns, Delimited, Other. In Google Sheets it's Data, Split text to columns, Custom.
  • Keep one tab per month. A single tab that runs all year grows slow and makes the COUNTIFS ranges easy to break.
  • Lock the formula columns G and H once they work. Most broken trackers were broken by someone typing a number over a formula.
  • Read late minutes beside the status column. Ten minutes late on a partial day tells a different story from ten minutes late on a full one.

PeopleMuster fills the same columns from fingerprint punches or browser check-in: check-in, check-out, working hours and late minutes for each date, with on-time rate on the KPI card and a CSV export.

Questions people ask about this letter

How do I calculate late minutes in Excel?

Subtract the shift start from the check-in and multiply by 1,440, the number of minutes in a day. Wrap it in MAX(0, …) so an early arrival shows 0 instead of a negative number. Excel stores times as fractions of a day, which is why the multiplier works.

How is the attendance rate worked out?

Divide the days a person was present, full or partial, by the working days expected that month. Take holidays and approved leave out of the expected days first. Leave them in and a person on planned leave looks like a poor attender.

What does the on-time rate measure?

It is the share of check-ins with zero late minutes. A person present 20 days and late on 2 of them has an on-time rate of 90%.

Why does my working hours cell show a negative number?

The check-out is probably earlier than the check-in, which happens on a night shift. The MOD part of the formula fixes that by wrapping the time past midnight. Check that the formula in column H still includes it.