How to Run Your Business From a Spreadsheet
Thousands of real businesses — including some doing well over six figures — run on a single Google Sheet or Excel file. The question isn't whether a spreadsheet can do it. It's whether yours is structured to hold up as the data grows.
A Reddit thread in r/smallbusiness said it best: "My entire business (£70k/month) is basically run on one huge Google Sheet — am I doing this wrong?" The top answer: no. The follow-up answers: it depends on how the sheet is structured. Here is how to structure it so it holds up.
1. One sheet for raw data — no summaries, no formatting
Create a sheet called Transactions or Data. Every row is one event: a sale, a payment, an expense. Columns are: Date, Type, Description, Client or Vendor, Category, Amount. Never put a running total or a formatted header in this sheet. Raw data stays raw. This is the most important structural decision you can make — everything else depends on it.
2. A separate sheet for summaries
Add a Summary or Dashboard sheet. Every number here comes from a formula, never from manual entry. Use SUMIFS to pull totals:
=SUMIFS(Data[Amount], Data[Type], "Revenue", Data[Date], ">="&DATE(2026,7,1), Data[Date], "<"&DATE(2026,8,1))
This gives you July revenue without touching the data. Change the month and it recalculates. Add a row per month and you have a running P&L.
3. Date-aware formulas that update automatically
Hard-coded date ranges break the moment the month changes. Use TODAY() to keep ranges rolling:
- Month to date:
=SUMIFS(Data[Amount], Data[Type], "Revenue", Data[Date], ">="&EOMONTH(TODAY(),-1)+1, Data[Date], "<="&TODAY()) - Last 30 days:
=SUMIFS(Data[Amount], Data[Type], "Revenue", Data[Date], ">="&TODAY()-30) - Year to date:
=SUMIFS(Data[Amount], Data[Type], "Revenue", Data[Date], ">="&DATE(YEAR(TODAY()),1,1))
Drop these in your Summary sheet and they stay current without touching them.
4. Conditional formatting to spot problems
On your Summary sheet, add a column for "Target" next to each category total. Then use conditional formatting — Home → Conditional Formatting → New Rule → Use a formula — to flag rows where actual is below target. Red means below, green means above. One glance replaces ten minutes of checking.
5. The one signal it's time to go further
A well-structured spreadsheet can carry a business a long way. The moment it can't is specific: when someone asks a reasonable question — "how much did client X pay us in Q1?" or "what's our margin on product Y?" — and the answer takes more than two minutes to find. That's not a data problem. It's a query problem. The data is there; it's just not easy to reach.
That's the moment to add a query layer on top of the spreadsheet rather than switching systems entirely. You keep your data where it is, and ask questions of it in plain English instead of building a new SUMIFS formula every time.
The import that quietly overstates your revenue
Every business sheet is fed by an export from somewhere, and payment exports are where the first real error enters. A Stripe payout CSV carries gross, fee and net as separate columns. PayPal splits the fee onto its own row with a negative amount. Shopify's payouts report separates the order total from the charge, the refund and the adjustment.
Paste any of those into a single Amount column and you have booked revenue you never received. The gap is small per transaction and entirely consistent in direction, so it does not look like an error — it looks like slightly better months than your bank balance agrees with. On card fees of roughly 2%, a business turning over £70k a month is out by more than £1,400 every month, in the flattering direction.
Two rules that prevent it:
- Keep gross, fee and net as three columns, never one. You can always sum whichever you need; you cannot recover a fee that was never imported.
- Reconcile to the bank, monthly. Sum your net column for the month and compare it with what actually landed. If they differ, find out why before adding another month of rows. This is fifteen minutes and it is the single highest-value habit in this whole article.
Which structure to actually use
In order, and the order is the point:
- One file, raw-data sheet plus formula summary. What is described above. This is what I would build, and it carries a business further than most people expect — well past the point where they have been told to buy software.
- The same file, plus a query layer on top. When the questions outgrow the dashboard but the data is still fine. You change nothing about where the data lives; you change how you ask it. Cheapest possible upgrade.
- Accounting software. Correct when you need things a spreadsheet genuinely cannot do: VAT returns, payroll, an audit trail, a bookkeeper who needs access. Note that none of those are analysis. People switch for reporting and then discover the reporting is the part they liked better in the sheet.
- A separate database or BI tool. Almost never, at this size. If you are a five-person company standing up a warehouse to answer questions about a file with 4,000 rows in it, the problem was never the file.
Most advice on this topic jumps straight to option 3 and treats options 1 and 2 as a phase to be grown out of. That is backwards for a business of this size. Options 1 and 2 are cheap, reversible and yours. Option 3 is a migration.
What breaks, and which way the number moves
Three failures account for nearly all of it, and all three push the same direction.
A manual total that stops seeing new rows. Somebody types =SUM(B2:B430) when there are 430 rows. Row 431 onwards is invisible. The number stays plausible and grows slowly wrong, and it always understates, because the missing rows are the newest ones. Using a Table — Ctrl + T — and referring to Data[Amount] removes this failure entirely, which is the real argument for Tables over ranges.
Sorting a sheet where summaries sit beside data. The totals do not move with the rows they were describing. Nothing errors. Every figure on the sheet is now attached to the wrong label.
A category typed slightly differently. Marketing and marketing are two categories to SUMIFS and one category to you. The second one is missing from your dashboard and its spend does not appear anywhere — so, again, the picture is more flattering than the bank. A drop-down list on the category column (Data → Data Validation → List) is the fix, and it takes two minutes.
The common thread is worth naming: spreadsheet errors are not random. They almost all understate cost and overstate revenue, because the failure mode is data going missing rather than data being invented. A sheet that has never been reconciled is not a coin flip — it is optimistic.
The sheet was never what broke. What broke was the day I needed somebody else to update it.
Having started companies, I have run one on a single file for longer than I would admit to an accountant, and it worked. What I did not notice was how much of it was not in the file. Which deposits counted as revenue and which were held against delivery. When a refund got netted off and when it got its own row. That two of the client names were the same client. None of it was written down, because none of it needed to be while I was the only person who ever opened the thing.
The moment a second person touched it, every one of those became a question — and I did not always give the same answer I had given the file eighteen months earlier. That is the part nobody warns you about: the inconsistency is already in the data, and it only becomes visible when someone else has to reproduce your judgement.
So the signal to add structure is not revenue and it is not row count. It is the second person. A sheet one person maintains can hold its rules implicitly forever. A sheet two people maintain needs them written down — and the hour it takes to add a tab called Definitions, listing what counts as what, is the cheapest hour in this entire article. Write it before you need it, because writing it afterwards means reconstructing decisions you have already forgotten making.
Asking the sheet instead of rebuilding it
Option 2 above is what Quiriz is: the data stays in the file you already have, and a new question is a question rather than a new tab. How much did client X pay us last quarter. Which category is over budget this month. In Excel that is =QUIRIZ.ASK("revenue by client last quarter", "table"), spilled into the sheet.
The honest limit is the one from the field note, and it is not technical. We can only answer from what the file records. If deposits and revenue are mixed in one column, we will total them together exactly as your SUMIFS does — faster, and just as wrong. The Definitions tab is not a step you skip by adding a tool; it is the thing that makes any tool, including this one, worth trusting.
Ask questions about your business spreadsheet
Connect your Google Sheet or upload your Excel file, ask a question in plain English, and get the answer in seconds. No new formulas, no pivot tables. Free to start.
Try Quiriz free →