Spreadsheet Risk
Spreadsheet Audit Trails: Why Excel Cannot Give You One
Excel cannot produce a defensible audit trail because its history is optional, editable, incomplete and tied to a file rather than a record. An auditor asking who changed a figure, when, and what it was before needs per-record attribution that survives the file being copied — which is a property of a system, not of a document.
8 min readUpdated
When the obligation is binding and the spreadsheet cannot meet it, Datanova helps businesses move the process into a system with per-record history.
What an audit trail actually has to do
"Audit trail" gets used loosely. When an auditor, a regulator or a customer's compliance team asks for one, they are asking for a record that satisfies five specific properties:
- Attributable — every change is tied to an identified person, not to a shared login or a filename
- Complete — every change is recorded, not only the ones someone chose to save
- Immutable — the record cannot be altered by the people whose work it records
- Contemporaneous — captured when the change happened, not reconstructed later
- Retrievable — you can answer a question about one figure without reading a whole file
These are not arbitrary. They are roughly the ALCOA properties used in regulated manufacturing, and they turn up in similar form in financial controls and in customer quality agreements. A spreadsheet fails four of the five.
Why Excel's history does not qualify
| Property | What Excel gives you |
|---|---|
| Attributable | A username on a shared file, if version history is even on; copies lose it entirely |
| Complete | Version snapshots, not changes — edits between saves are invisible |
| Immutable | Anyone with edit rights can alter data and, in many setups, the history along with it |
| Contemporaneous | Only as good as the save cadence; offline copies break it |
| Retrievable | You can diff whole files, not ask "what happened to this record" |
Microsoft 365 version history and co-authoring genuinely improve the first and fourth rows. Neither makes the record immutable, and neither gives you per-record retrieval — which is what a question about a disputed figure actually needs.
Where this stops being theoretical
Most spreadsheet-driven processes never face this question. These do, usually with a deadline:
- A customer quality agreement requiring traceability of inspection or batch records
- Financial controls where someone has to evidence separation of duties and approval
- Pharmaceutical, medical device or regulated manufacturing supply chains with retention and recall obligations
- A dispute where a customer challenges a price, a quantity or a sign-off, and the file is the only evidence
- Certification — ISO 9001, SOC 2, IATF — where the auditor asks how records are controlled
- Any process where the answer to "how do you know this number is right" is a person's memory
The options, cheapest first
- Lock the spreadsheet down — single master file on SharePoint with version history on, edit rights restricted, no local copies. Improves attribution and gives you something rather than nothing. Does not give immutability, and a determined user can still bypass it.
- Log changes out of the spreadsheet — a macro or scheduled job that writes every change to an append-only store the editors cannot reach. A real improvement, and it is a workaround: it captures what it was built to capture, and nothing else.
- Move the record of truth into a system — the data lives in a database with per-record history, identified users and enforced approval steps, and people work through an interface. This is the only option that satisfies all five properties, and it is what an auditor is actually describing when they ask for an audit trail.
Option 1 is worth doing this week regardless of what else you decide. Option 2 is a legitimate middle ground when the obligation is narrow and known. Option 3 is what a binding compliance requirement eventually forces, and the useful thing to know is that it does not have to happen across the whole business at once — the process under obligation can move on its own.
What a defensible trail looks like in practice
- Every record carries who created it, who last changed it, and when
- Changes are stored as an append-only history, including the previous value
- Approvals are recorded as events with an identified approver, not as a signature in a cell
- Users are individually identified — no shared accounts, ever
- History is retained on a defined schedule and cannot be deleted by ordinary users
- Any single record's full history can be produced without reading the whole dataset
None of that requires an enterprise platform. It is the default behaviour of a modestly built application over a relational database, which is why this is one of the clearer cases where replacing the spreadsheet pays for itself — the cost of failing an audit is rarely bounded.
Frequently asked questions
Does Excel have an audit trail?
Is SharePoint version history enough for compliance?
Can we add an audit trail to our existing spreadsheet?
How long do we need to keep records?
Facing an audit on a spreadsheet-driven process?
In a free consultation we look at what you are obligated to evidence and what the current process can actually produce, then tell you the smallest change that closes the gap.