Blog · Data & Systems · June 28, 2026 · 4 min read
The DIY vendor price-comparison spreadsheet (before you need a full platform)
You don't need software to stop overpaying vendors. You need one spreadsheet built the right way. Here's a concrete layout and formula pattern for comparing vendor prices without a platform.
Most businesses that eventually need a real price-comparison system started out with a spreadsheet, and most of those spreadsheets aren't built well enough to actually catch savings. The good news is that a properly structured comparison sheet, not a fancy one, just a correctly structured one, will get you most of the way to "stop overpaying vendors" without any software at all. Here's how to build it.
The layout that actually works
The mistake most comparison sheets make is putting one vendor per sheet or one vendor per column-group, which makes comparing prices across vendors require a lot of manual scanning. Instead, structure it as one row per item, one column per vendor:
| Item | Unit | Vendor A | Vendor B | Vendor C | Best Price | Best Vendor |
|---|---|---|---|---|---|---|
| 2x4 SPF Lumber, 8ft | per unit | $6.85 | $7.40 | $6.20 | $6.20 | Vendor C |
| OSB Sheathing 7/16" | per sheet | $34.50 | $31.90 | $36.10 | $31.90 | Vendor B |
This layout makes two things trivial that are painful in most homemade sheets: seeing the cheapest option at a glance, and adding a new vendor later (just add a column, not a whole new sheet).
The two formulas that do the actual work
You need exactly two formulas, and both are standard in Google Sheets and Excel, no scripting required.
Best Price (find the lowest price across vendor columns):
=MIN(C2:E2)
Best Vendor (find which vendor that price belongs to):
=INDEX($C$1:$E$1, MATCH(MIN(C2:E2), C2:E2, 0))
INDEX/MATCH looks intimidating the first time you see it, but it's doing something simple: MATCH finds where the minimum price is in the row, and INDEX returns the vendor name sitting in that same position in the header row. Once you build this once, you copy it down for every item.
Make the cheapest option visually obvious
Add conditional formatting so the cheapest cell per row highlights automatically: in Google Sheets, use a custom formula rule like =C2=MIN($C2:$E2) applied to each vendor column, with a green fill. Now you don't even need to read the Best Price column to see who's cheapest; it's highlighted directly in the price grid. This single step is what turns a data table into something you can actually act on quickly.
Track price history, not just current prices
A comparison sheet with only today's prices tells you who's cheapest right now; it doesn't tell you whether a vendor who used to be reliable has started quietly creeping their prices up. Keep a second tab, structured as one row per price check per item:
| Date | Item | Vendor | Price |
|---|---|---|---|
| 2026-04-01 | 2x4 SPF Lumber, 8ft | Vendor C | $6.05 |
| 2026-06-28 | 2x4 SPF Lumber, 8ft | Vendor C | $6.20 |
Even a manually updated log like this, with no automation, just discipline about logging a row every time you check prices, lets you build a simple pivot table or chart later to spot trends per vendor. This is the exact data structure that a real price-tracking system needs; a spreadsheet log is just the manual version of it.
Where this approach genuinely breaks down
This gets you very far for a small number of regularly-purchased items and a handful of vendors you check by hand. It stops working cleanly once any of these happen:
- You're comparing dozens or hundreds of SKUs. Manually re-checking prices across many items and many vendors turns from a monthly chore into a part-time job.
- Vendors publish prices somewhere you'd have to check manually. If pricing lives on vendor websites or portals, keeping the sheet current means someone visiting multiple sites by hand: the exact repetitive task automation is good at removing.
- You need to act on price changes automatically, not just see them next time you happen to open the sheet, for example, auto-splitting a purchase order across the cheapest vendor per item instead of manually copying numbers into an order form.
- More than one person needs to trust the same numbers. Spreadsheets get forked, copied, and go stale fast once more than one person is editing them.
If you're doing the spreadsheet version of this today, you're already doing the right thing conceptually: the sheet is just the manual, single-person version of what a real data management and automation system does automatically at scale.