The columns (one row per cost code)
| Cost code | Units bid | Bid hrs/unit | Bid hours | Units done | Earned hours | Hours spent | Variance (hrs) | Cost at completion |
|---|---|---|---|---|---|---|---|---|
| Drywall hang | 900 sheets | 0.35 | 315 | 605 | 212 | 261 | −49 | $48,900 vs $45,000 bid |
| Tape & finish | 900 sheets | 0.30 | 270 | 180 | 54 | 50 | +4 | on budget |
The formulas
- Earned hours = (units done ÷ units bid) × bid hours. Example: (605 ÷ 900) × 315 = 212 hrs earned.
- Variance = earned hours − hours spent. Negative means the code is burning hours faster than it earns them — you're over on hours.
- Cost at completion = (hours spent ÷ earned hours) × bid hours × loaded labor rate. If burn rate outruns production, this number outruns your bid.
Copy-paste header row
Paste this into cell A1 of a new Google Sheet or Excel workbook (it splits on commas):
Cost code,Units bid,Bid hrs/unit,Bid hours,Units done,Earned hours,Hours spent,Variance (hrs),Cost at completion
Then in row 2: Earned hours = =(E2/B2)*D2, Variance = =F2-G2. Update units done and hours spent daily per cost code.
Or do this in 30 seconds a day on your phone
The spreadsheet works — until week two, when nobody has updated it since Tuesday. Construction Job Cost Tracker (ProdTrack) is the same columns and the same earned-hours math: one log line a day per cost code from the truck, red flags on bleeding codes, and a branded PDF variance report for the Monday meeting. Data stays on your phone; one job free, one-time Pro unlock — no subscription.
Get it on Google Play Learn more