Stop Calling Excel a 'Spreadsheet' — It’s Already Your Simple Database

Most people say Excel isn’t a database. They’re wrong. Not ‘kind of’ wrong — factually wrong. Excel has supported structured references, relational lookups, and row-based filtering since 2007. If your dataset fits in 1M rows and doesn’t need concurrent writes, Excel is your simplest, fastest, most auditable database.

The Setup

You’re managing vendor contracts for a midsize logistics firm. Eight active agreements. Each has a vendor name, start date, annual value, renewal status, and assigned manager. No cloud sync needed. Just one file, updated weekly by procurement staff.

Vendor IDVendor NameStart DateAnnual Value ($)Renewal DueManager
V-702LogiCore Solutions2023-04-12$84,5002024-04-12Sarah Chen
V-703TerraFreight Group2023-06-30$127,9002024-06-30Rajiv Mehta
V-704Nexus Haul LLC2023-01-15$52,3002024-01-15Sarah Chen
V-705AeroLoad Systems2023-09-05$98,6002024-09-05Linda Park
V-706Coastal Dispatch Co.2022-11-22$64,1002023-11-22Rajiv Mehta
V-707Veridian Logistics2023-03-18$112,4002024-03-18Sarah Chen
V-708StratoCargo Inc.2023-07-09$76,8002024-07-09Linda Park
V-709Polaris Transit Ltd.2022-10-03$45,2002023-10-03Rajiv Mehta

The Challenge

You need to answer three questions every Monday:

  • Which vendors renew within 30 days?
  • What’s the total annual spend for Sarah Chen’s vendors?
  • Who hasn’t been assigned a manager? (blank Manager column)

Most users try copy-paste filters or manual COUNTIFS. That breaks when someone inserts a row. Or changes a date format. Or pastes over column headers. Excel-as-database fails not because it can’t do it — but because people skip structure.

Walking Through It

Do this — no exceptions.

Step 1: Convert to a Table. Select A1:F9 → press Ctrl+T → check “My table has headers” → click OK. Excel auto-names it Table1. Now every column is a structured reference: [Renewal Due], not C2:C9.

Step 2: Add a helper column for “Days Until Renewal”. In G1, type Days Left. In G2, enter: =[@[Renewal Due]]-TODAY(). Drag down. This column updates live. No hardcoded dates.

Step 3: Build the 30-day renewal list. In a new sheet (Sheet2), in A1, enter =FILTER(Table1[#All],Table1[Days Left]<=30). That’s it. It returns matching rows — full rows, not just one column. If you add a vendor next week with Renewal Due = 2024-11-15, it appears automatically.

Step 4: Total Sarah Chen’s spend. In B1 of Sheet2: =SUMIFS(Table1[Annual Value ($)],Table1[Manager],"Sarah Chen"). Returns $243,200.

Step 5: Find unassigned vendors. In C1: =FILTER(Table1[#All],ISBLANK(Table1[Manager])). You’ll get V-706 and V-709 — wait, no. Check again. V-706 has “Rajiv Mehta”. V-709 has “Rajiv Mehta”. So none are blank. Good. But if someone *does* leave Manager empty, it shows up instantly.

Before (A1:F9)After (Structured Table + FILTER)
No auto-expansion
No dynamic ranges
No column safety
Auto-expands on paste
Named columns resist breakage
Formula errors show #REF only if column renamed
Manual filter = lost context
Copy/paste breaks links
FILTER() spills results
Spill range auto-resizes
No dragging needed
Hardcoded ranges like B2:B9Table1[Manager] always correct
Even if you insert column G

The Result

This is what your dashboard looks like after 4 minutes:

Vendor IDVendor NameStart DateAnnual Value ($)Renewal DueManagerDays Left
V-704Nexus Haul LLC2023-01-15$52,3002024-01-15Sarah Chen-12
V-706Coastal Dispatch Co.2022-11-22$64,1002023-11-22Rajiv Mehta-41
V-709Polaris Transit Ltd.2022-10-03$45,2002023-10-03Rajiv Mehta-72

Note: Negative values mean renewal passed. You’d normally add >=0 to the FILTER, but showing overdue items helps spot slippage.

What Could Go Wrong

These aren’t edge cases. They happen weekly in real teams.

Mistake 1: Copying data into a table without using Paste Special → Values. If you paste formulas from another sheet into Table1, Excel tries to auto-fill them down — often overwriting your FILTER logic on Sheet2. Fix: Alt+E, S, V → paste values only.

Mistake 2: Renaming a column header manually (e.g., typing “Renewal Date” instead of “Renewal Due”). All formulas using Table1[Renewal Due] break with #REF!. The fix isn’t re-typing — it’s renaming the column properly: click the header → F2 → edit → Enter. Excel updates all structured refs.

Mistake 3: Using SUBTOTAL(109,...) on filtered data while forgetting that FILTER() output isn’t a filtered range — it’s a dynamic array. SUBTOTAL ignores hidden rows. FILTER ignores nothing. So if you wrap FILTER in SUBTOTAL, you’ll double-count or miss entries. Use SUMIFS or SUM instead.

Bonus tip: Press Alt+A, T to open the Sort dialog — then sort by Days Left ascending. You’ll see overdue items at the top. That’s faster than writing a SORT(FILTER(...)) combo.

ActionShortcutPurpose
Convert to TableCtrl+TLocks structure, enables structured refs
Paste Values OnlyAlt+E, S, VPrevents formula spill chaos
Open Sort DialogAlt+A, TSort tables without breaking formulas
Recalculate AllF9Forces FILTER/SUMIFS to refresh (rarely needed, but useful)
David Park

David Park

David brings deep expertise in office supply evaluation and procurement. He has tested hundreds of products to help teams make informed purchasing decisions.