How to create an audit trail by comparing weekly excel export versions
- Step 1Archive each week's export as a dated file — Keep last week's and this week's exports as separate files, named by date (
report_2026-06-05.xlsx,report_2026-06-12.xlsx). The first file uploaded is the baseline (prior week); the second is the current week — so the change log reads 'last week → this week'. - Step 2Use a Pro account — Range Diff is Pro-gated and needs two files at once. Free allows only one file per run, so a week-over-week comparison can't run on Free. Pro covers 50 MB / 100,000 rows per file and 5 files; Pro-media and Developer go higher for large data dumps.
- Step 3Sort exports the same way every week — Because rows compare by position, configure the source system (or sort manually) so each weekly export is ordered identically — typically by a stable record ID or date. Consistent ordering keeps the diff focused on genuine changes rather than positional shifts.
- Step 4Upload last week first, then this week — Drop file A (prior week) then file B (current week). Both read in-browser. No options appear — the comparison is deterministic, which is what you want for a repeatable weekly audit.
- Step 5Capture the change summary — The result panel shows
diffCountand the first 200 changes as[Sheet] Column[row N]: "old" → "new" (type). Copy this into the week's audit note for a quick, human-readable record. - Step 6Archive diff-report.xlsx for the week — Download the colour-coded workbook and store it with the date in your audit folder. Each cell shows the new value (or the old value where an entry was removed), giving a permanent visual record of the week's changes.
Weekly change types and how the diff classifies them
Mapping common week-over-week export changes to the diff output.
| Week-over-week change | Diff type | Output colour |
|---|---|---|
| A value updated (status, quantity, score) | Changed | Amber |
| A previously blank field now populated | Added | Green |
| A field cleared since last week | Removed | Red |
| A whole new sheet/tab in this week's file | Added (all cells) | Green sheet |
| A new row appended at the bottom (same order above) | Added | Green |
| A row inserted at the top | Cascade of changes | Amber/green (positional shift) |
Export consistency checklist for a clean weekly trail
Keep these stable across weekly exports so the diff reflects real changes, not export drift.
| Factor | Why it matters | Keep it |
|---|---|---|
| Row order | Rows compare by position | Same sort key every week |
| Number formatting | Values compare as strings | Same format (5 not 5.0) |
| Column headers | Columns match by header name | Identical header text |
| Sheet names | Sheets match by name | Same tab names |
| Leading zeros / IDs | String compare | Consistent (007 vs 7) |
Tier limits for weekly two-file diffs
Range Diff is Pro+; larger weekly dumps may need Pro-media or Developer row headroom.
| Tier | Max file size | Max rows / file | Files per run |
|---|---|---|---|
| Free | 5 MB | 10,000 | 1 (can't run a 2-file diff) |
| Pro | 50 MB | 100,000 | 5 |
| Pro-media | 200 MB | 500,000 | 20 |
| Developer | 500 MB | Unlimited | Unlimited |
Cookbook
Week-over-week scenarios. Data is illustrative; summary lines match the tool's real [Sheet] Column[row N]: "old" → "new" (type) output.
A status field updated since last week
An item's status moved from Open to Closed. One amber cell — the core of a weekly change record.
Last week (Tickets): This week (Tickets): ID,Status ID,Status 101,Open 101,Closed 102,Open 102,Open Result: diffCount: 1 [Tickets] Status[row 0]: "Open" → "Closed" (changed) → amber
New rows appended at the bottom
This week's export added two records below the existing, identically-ordered rows. Because the prior rows are positionally unchanged, only the new rows flag as added.
Last week: This week:
ID,Qty ID,Qty
1,10 1,10
2,5 2,5
3,8 ← new
4,2 ← new
Result: row2 ""→3/8 (added), row3 ""→4/2 (added) → green
(only the appended rows flag — prior rows stayed in place)An entry removed this week
A record present last week was cleared this week. Classified removed (red); the output cell shows the old value.
Last week: This week: ID,Note ID,Note 1,active 1, Result: diffCount: 1 [Data] Note[row 0]: "active" → "" (removed) → red (cell shows "active")
A new report tab this week
This week's export includes a 'Week 24 KPIs' sheet that last week's didn't. The whole tab is written to the diff as added.
Last week sheets: Summary, Tickets This week sheets: Summary, Tickets, Week 24 KPIs ← new Result: Week 24 KPIs written as an all-green sheet. summary: Compared 3 sheet(s). N differences found.
Export re-sorted between weeks (positional shift)
The source system changed its default sort, so this week's rows are in a different order. Positional comparison then flags most rows as changed even though the data set is the same.
Last week (sorted by ID): This week (sorted by name): ID,Name ID,Name 1,Alice 3,Carol 2,Bob 1,Alice 3,Carol 2,Bob Result: nearly every row flags as changed. Fix: sort both exports by the same key (ID) before diffing.
Edge cases and what actually happens
Only one week's file uploaded
ErrorRange Diff needs both weeks. With one file it throws 'Two files are required for comparison.' Upload last week first, then this week.
Running on Free tier
Pro requiredThe tool throws 'Range Diff requires Pro tier.' Free allows only one file per run, so a week-over-week diff can't run there. Upgrade to Pro or higher.
Export re-sorted or rows reordered week to week
Expected (positional)Rows compare by position, so a different sort order makes most rows flag as changed. This is the most common weekly-diff pitfall. Sort both exports by the same stable key (record ID or date) before diffing for a meaningful trail.
Rows inserted mid-list rather than appended
ExpectedA new record appended at the bottom flags cleanly as added. A record inserted in the middle shifts every row below it, so they report as changed. Where possible, sort by a key so new records land predictably, or accept that mid-list inserts cascade.
Number formatting changed between exports
Changed (string compare)Values compare as strings: 5 vs 5.0, or an ID like 007 vs 7, register as changed. Keep the source system's number/text formatting consistent across weeks, or normalise before diffing.
A column header was renamed in this week's export
ExpectedColumns match by header name, so a renamed header is treated as a new column (old one removed, new one added) — every value under it shows as changed. Lock the export's header text week to week, or rename headers to match before diffing.
A new column appears only from row 2 onward
Not detected as a columnThe column set is built from the first data row of each sheet. A column populated only from the second row down won't be in the compared key set. Ensure each week's export has a complete header row at the top.
Date cells exported differently
ChangedIf one week exported a date as a serial number and another as text, or the display format differs, the string comparison flags it as changed. Standardise date output across exports (or run the date standardizer first).
Very large weekly dump
Summary cappedThe text summary lists the first 200 changes and findings hold 500, but diffCount is the true total and every change is coloured in diff-report.xlsx. Archive the workbook as the authoritative weekly trail for large exports.
Report sheet name over 31 characters
TruncatedExcel limits sheet names to 31 characters, so the output worksheet name is truncated. Long report-tab names matching in their first 31 characters could collide; shorten them if that's a risk.
Frequently asked questions
How do I build a weekly audit trail with this?
Archive each week's export as a dated file, then each week diff the prior file against the current one. Store the resulting diff-report.xlsx and the text change log with the date. Over time you accumulate a dated series of colour-coded change records — your audit trail. The first file uploaded is the prior week, so each log reads 'last week → this week'.
Why does almost everything show as changed some weeks?
Almost always because the export's row order changed — a different sort, or rows inserted mid-list. Range Diff compares rows by position, so reordering throws off the alignment. Sort both files by the same stable key (record ID or date) before diffing, and the trail reflects only genuine changes.
Will new records appended at the bottom flag cleanly?
Yes — if the existing rows keep their order and the new records are appended below them, the prior rows compare as unchanged and only the new rows flag as added (green). This is the ideal shape for a weekly trail, so configure your export to append rather than insert.
Is my exported data uploaded anywhere?
No. Range Diff runs entirely in your browser via ExcelJS and SheetJS. Operational, financial, and personal data in the exports never leaves your machine. Only an anonymous processed-file counter is logged for dashboard stats — important when the exports contain regulated data.
Can I compare more than two weeks at once?
Not in one run — Range Diff compares exactly two files. For a multi-week trail, diff consecutive weeks pairwise (week 1↔2, week 2↔3) and archive each diff. That also keeps each change record scoped to a single week, which is cleaner for audit.
How do I handle date columns that export inconsistently?
Standardise the date output across weeks. If one export writes a date serial and another writes text, the string comparison flags it as changed. Run both files through the date standardizer first so dates are in a single format before you diff.
What if this week's export renamed a column?
Columns match by header name, so a renamed header is treated as a removed column plus a new one — every value under it flags as changed. Keep header text identical across weekly exports, or rename headers to match before diffing, so column renames don't pollute the trail.
Does a 'no changes' week produce anything useful?
Yes — a diffCount of 0 and 'N sheet(s). 0 differences found.' That's a documented, audit-worthy record that nothing changed this week. Archive the result the same way you would a week with changes, so your trail has no gaps.
What does each colour mean in the archived workbook?
Amber = a changed value, green = an added value (the field was blank last week), red = a removed value (cleared this week), and the grey bold row is the header. Unchanged cells have no fill, so the colour makes the week's deltas instantly scannable.
How large a weekly export can it handle?
Pro allows 50 MB and 100,000 rows per file, Pro-media 200 MB / 500,000 rows, and Developer 500 MB with unlimited rows — pick the tier that fits your weekly dump. Free can't run a two-file diff. The full diff is always coloured in the workbook; only the text summary truncates.
Can I automate the weekly comparison?
The tool itself runs interactively in the browser, with no per-tool API for the diff (the public API redirects two-file XLSX tools to the browser tool). A practical weekly routine is: keep the export's sort and headers stable, archive the dated file, and run the diff in the browser each week against the prior archived file.
Which related tools help with weekly export workflows?
Use the date standardizer to normalise date columns before diffing, the sheet joiner to consolidate multi-tab exports, the conditional splitter to break an export into per-category files, and the error locator to catch broken cells in a fresh export.
Privacy first
Every JAD Excel tool runs entirely in your browser using SheetJS and ExcelJS. Your spreadsheets, formulas, and data never leave your device — verified by zero outbound network requests during processing.