
Complete Guide to Calculating Work Efficiency in Excel — Productivity, Availability, Throughput, and On-Time Rate Templates
Environment: Excel 365/2019. AI was used to help structure this article, but all formulas were manually reproduced and verified.
Related guides (7+ internal links)
1) Metric Design — Simple Principles, Transparent Calculations
- Measurable Convert to numbers, time, and counts
- Comparable Measure the difference from targets or standards
- Reproducible Anyone can understand the calculation basis by reviewing the formulas
Recommended units: Use both decimal hours and [h]:mm formatting for time. Keep totals and averages in numeric columns, with separate display columns for reporting.
2) Template Columns and Basic Formulas (Structured References)
Table name: LogTbl
| Column | Meaning | Formula (example) | Format |
|---|---|---|---|
| WorkHrs | Actual work time (hours) | =((LogTbl[End]-LogTbl[Start])-LogTbl[Break])*24 | 0.00 |
| OnTime | Whether completed on time | =LogTbl[CompletedAt]<=LogTbl[Due] | TRUE/FALSE |
| OK | Quality pass | =LogTbl[Quality]="OK" | TRUE/FALSE |
| UPH_Target | Target throughput (units/hour) | =LogTbl[TargetUPH] | Number |
| UPH_Actual | Actual throughput | =IFERROR(LogTbl[Units]/LogTbl[WorkHrs],0) | 0.00 |
3) 10 Essential Work Efficiency Metrics (Ready to Copy and Paste)
/* ① Efficiency % (based on standard time) */
=IFERROR( (LogTbl[Units] * 60 / LogTbl[TargetUPH]) / (LogTbl[WorkHrs]*60) * 100 , 0)
/* ② Efficiency % (against target throughput) */
=IFERROR( LogTbl[UPH_Actual] / LogTbl[UPH_Target] * 100 , 0)
/* ③ Availability = actual work / planned work hours */
=IFERROR( SUM(LogTbl[WorkHrs]) / SUM(LogTbl[PlannedHrs]) * 100 , 0)
/* ④ Utilization = share of core/billable work while working */
=IFERROR( SUMIFS(LogTbl[WorkHrs], LogTbl[Billable], TRUE) / SUM(LogTbl[WorkHrs]) * 100 , 0)
/* ⑤ On-time rate */
=IFERROR( COUNTIFS(LogTbl[OnTime], TRUE) / COUNT(LogTbl[OnTime]) * 100 , 0)
/* ⑥ Quality rate */
=IFERROR( COUNTIFS(LogTbl[OK], TRUE) / COUNT(LogTbl[OK]) * 100 , 0)
/* ⑦ Overall performance efficiency (OPE) = efficiency × quality × on-time */
=ROUND( Efficiency% * QualityRate/100 * OnTimeRate/100 , 1)
/* ⑧ Productivity per person (daily/weekly) */
=LET(u, UNIQUE(LogTbl[Person]),
HSTACK(u, MAP(u, LAMBDA(p, SUMIFS(LogTbl[Units], LogTbl[Person], p)))) )
/* ⑨ Hours/units by category */
=LET(cat, UNIQUE(LogTbl[Category]),
HSTACK(cat,
MAP(cat, LAMBDA(c, SUMIFS(LogTbl[WorkHrs], LogTbl[Category], c))),
MAP(cat, LAMBDA(c, SUMIFS(LogTbl[Units], LogTbl[Category], c)))
))
/* ⑩ Top bottleneck tasks (top 5 by time) */
=LET(t, SORT(HSTACK(LogTbl[Task], LogTbl[WorkHrs]), 2, -1),
TAKE(t, 5))
When standard time is unavailable, use the average UPH_Actual from the first one to two weeks as a baseline, then raise the target gradually.
4) Build a Mini Dashboard Without a PivotTable (Sparklines)
/* Daily throughput trend (sparkline) */
=SPARKLINE( SUMIFS(LogTbl[Units], LogTbl[Date], UNIQUE(LogTbl[Date])) )
/* Weekly productivity ranking by person */
=LET(p, UNIQUE(LogTbl[Person]),
s, MAP(p, LAMBDA(x, SUMIFS(LogTbl[Units], LogTbl[Person], x))),
SORT(HSTACK(p,s), 2, -1))
5) Bottleneck Pareto Analysis and Improvement Checklist
- If the top 20% of tasks consume 80% of the time, invest in standardized work, macros, and shortcut training.
- If the on-time rate is low, review the
Duecalculation logic and waiting time (handoffs). - If the quality rate is low, categorize defects by cause → use
COUNTIFSto identify the top 5 recurring issues. - If availability is low, record meetings and non-working time in separate logs.
Next, use LET and LAMBDA to reduce repeated calculations, and use VSTACK/HSTACK to combine monthly logs at once.