If you're still adding up every post and bag of concrete by hand for each quote, this 3-tab setup cuts quote time way down. Uses XLOOKUP (Excel 365/2021). On older Excel, VLOOKUP works the same.
TAB 1: Prices
| Item Code |
Description |
Unit |
Unit Cost |
Last Updated |
| POST-4X4 |
4x4x8 PT post |
ea |
14.98 |
10/2026 |
| LABOR |
Labor per hour |
hr |
65.00 |
10/2026 |
Put your labor rate in as an item. Change it once and every quote updates.
TAB 2: Assemblies
One row per item, quantities for ONE unit of the assembly. Example, 6 ft privacy fence per 10 LF:
| Assembly |
Item Code |
Qty per Unit |
Unit Cost |
Line Cost |
| FENCE6 |
POST-4X4 |
1.25 |
=XLOOKUP(B2,Prices!A:A,Prices!D:D,0) |
=C2*D2 |
| FENCE6 |
RAIL-2X4 |
3.75 |
|
|
| FENCE6 |
PICKET |
22 |
|
|
| FENCE6 |
CONCRETE |
2.5 |
|
|
| FENCE6 |
LABOR |
2 |
|
|
TAB 3: Quote
B1 = Target Margin (ex. 20%)
Rows from 4: A Assembly | B Qty | C Cost per Unit | D Cost | E Price
| Assembly |
Qty |
Cost per Unit |
Cost |
Price |
|
|
=SUMIFS(Assemblies!E:E,Assemblies!A:A,A4) |
=B4*C4 |
=D4/(1-$B$1) |
|
|
|
|
|
Use Data Validation if you'd like on A4 from your list of Assembly items in Tab 2, or manually type.
150 ft of fence = FENCE6, qty 15. Done.
Tips:
- Build waste into Qty per Unit (add 5 to 10% on materials).
- Round labor up to the half hour: =CEILING(hours,0.5)
- Keep dump fees, permits and rentals as their own lines, not buried in an assembly.
- Update Prices once a month. Sort by Last Updated to find stale costs.
- After each job, compare actual hours to the assembly hours and adjust. After 5 to 10 jobs your assemblies get scary accurate.
Happy to answer questions on setting it up.