Commercial real estate underwriting: a buyer's reference
Version control for Excel real estate models: the Reddit question, answered
Excel has no real version control, so you build it out of four habits: one source-of-truth file with a dated, versioned name; a change log tab recording who changed which cell and why; assumptions separated from calculations and locked; and one editor at a time. Version history in OneDrive or SharePoint is the safety net under that, not the system itself. Below is the setup, and the point where a database-backed tool removes the problem instead of managing it.
About this page. People add "reddit" to this search because they want an answer from someone with nothing to sell. Fair. Altyst published this page and sells commercial real estate underwriting software, so we do have something to sell. We also did not read Reddit for it: we quote no post, no user and no thread. Here is the straight answer anyway, with every claim about a product we did not build linked to the page we read it on.
Why a workbook cannot have real version control
Version control for code works because code is text: two edits can be compared line by line and merged. A workbook is not text. Git's documentation spells out the consequence, since a path marked binary has both diff and merge unset: it "will generate Binary files differ", and a merge will "Take the version from the current branch as the tentative merge result, and declare that the merge has conflicts."
One source of truth, named so it sorts itself
Use a filename shape like 2026-09-14_MainStApts_v07_JA_base.xlsx. Reverse date first, so a listing sorted by name is also sorted by date. Two-digit version, v07 not v7, so in anything that sorts names as text v10 does not land ahead of v2. Initials of whoever saved it. Then scenario rather than status: base, upside, lender, never final, which is how you get final2 and FINAL_actual.
One folder per deal: 00_source for the offering memorandum, rent roll and T-12 as received and never edited, 10_model for the workbook, 20_sent for anything that left the building. The rule that does the work is that 10_model holds exactly one file, and a version moves to 10_model/archive the moment it stops being live. Sprawl is not old versions existing, it is old versions sitting next to the live one.
The change log tab
Add a tab called Log as the first sheet: date, initials, sheet and cell, old value, new value, why, and the effect on the numbers you actually quote. An example row, invented here for shape rather than taken from a real deal:
| Date | By | Cell | From | To | Why | Effect |
|---|---|---|---|---|---|---|
| 2026-09-14 | JA | Inputs!C18 exit cap | 5.75% | 6.00% | lender pushback on exit | levered IRR 18.4% to 16.1% |
Version history tells you a file changed. The log tells you why a number moved between Tuesday and Friday, which is the question you get asked when you reopen the deal. Tie each row to the version in the filename.
Assumptions on one tab, calculations on the others
Every typed number belongs on an inputs tab; calculation tabs hold formulas and nothing else. That is what makes locking possible, and what makes the model auditable by someone who did not build it.
To find the inputs that have crept into your calculation sheets, apply a conditional formatting rule across them with the formula =NOT(ISFORMULA(A1)) and a loud fill. Anything that lights up is a hard-coded number living where it should not be.
Locking the inputs, in the right order
Set data validation before you protect the sheet: Microsoft says that "If the validation command is unavailable, the sheet might be protected or the workbook might be shared." Criteria include whole number, decimal, list, date, time, text length and custom, with an optional message shown when the cell is selected, and an error alert whose style decides what a bad entry costs. Microsoft's Stop style is to "Require users to fix the error before proceeding"; Warning and Information let the entry through after the user acknowledges it. Block the impossible, warn on the unusual.
Then protection. Microsoft's procedure is to select the cells others can edit, open Format Cells, go to the Protection tab, clear Locked, then protect the sheet. The password is optional, and "If you forget your password, Microsoft cannot retrieve it." Note the caveat in Microsoft's own words: "Worksheet level protection isn't intended as a security feature. It simply prevents users from modifying locked cells within the worksheet." It stops accidents, not people.
What cloud version history actually gives you
| Mechanism | What it gives you | What it does not |
|---|---|---|
| OneDrive version history | Restore a previous version; the restored one becomes current and the old current becomes the previous version in the list. | Microsoft states "File version history is retained for 30 days", and on a work or school account "your administrator may have turned off document versioning." |
| SharePoint or OneDrive library versioning | For Microsoft 365, "versioning is now turned on by default when you create a new library or list, and it will automatically save the last 500 versions of a document." Check-in comments are kept with the version. | It stores files and who changed them, not which assumption moved or why. |
| Require check out, in the library versioning settings | Requires a file to be checked out before it can be edited, rather than relying on everyone remembering. | Needs a library whose settings you control. |
Why two people in one workbook goes wrong
Co-authoring works, within limits. Microsoft requires the file on "OneDrive, OneDrive for Business, or a SharePoint Online library" in .xlsx, .xlsm or .xlsb, and notes that "SharePoint On-Premises sites (sites that are not hosted by Microsoft) do not support co-authoring." The rule that matters is the conflict rule: "In general, the last change that is saved, either with the Save button or automatically with AutoSave, is the one that wins." Microsoft's own mitigation is to assign "areas or sheets to each person."
In an underwriting model the numbers are joined end to end: a change to the rent roll moves net operating income, which excludes debt service and, depending on your convention, reserves; NOI moves the debt service coverage ratio, NOI divided by annual debt service, and the debt yield, NOI divided by the loan amount; the loan is sized on whichever of those tests binds first alongside loan-to-value, the loan size sets how much equity you have to write, and the equity is the denominator of the equity multiple, total distributions divided by equity invested. One silent overwrite rewrites that chain, and the file keeps no record that two people had two different intentions.
The old Shared Workbook feature is not the escape hatch: Microsoft says it "has many limitations, and has been replaced by co-authoring". So, one editor at a time. Use the library's check-out setting if you have one. If not, a message saying you have the model for the next 40 minutes costs nothing.
When a tool removes the problem instead of managing it
Process fails on the day somebody is in a hurry, and the reason is structural: a workbook is a file, and files get copied, emailed and renamed. When the model lives in a database instead, there is no second copy to reconcile: one record per deal, an edit history on the record, and the same inputs producing the same outputs every time. That matters most when several people touch the same deals, when you need to reproduce the version you showed a lender months later, or when one assumption should be set once across a portfolio.
Excel is still right when the structure is bespoke: an unusual promote, a ground lease with awkward escalations, a joint venture with a lookback nobody else models. And the swap has a limit, because the moment you export to Excel to send it out, file sprawl restarts downstream. A tool removes version control from inside the model, not from your outbox.
Altyst is one of these tools, so treat this paragraph as the sales part. It is browser-based commercial real estate underwriting software: it ingests an offering memorandum, rent roll, T-12, lease or a pasted listing link and builds an editable model, from rent roll and T-12 normalisation through lease rollover, debt sizing, waterfall, DCF and sensitivity tables. The AI does extraction; the arithmetic runs on a deterministic engine, so the same inputs give the same numbers and every figure traces to a source document or an assumption you can edit. It exports to Excel, PDF and PowerPoint. Pricing is $12 a month for 5 deals, $24 for 15, $99 for a 5-seat team with 75, with per-deal overage, no free tier and no free trial. It cannot open or produce ARGUS files. Altus Group describes "ARGUS Enterprise, now part of ARGUS Intelligence Platform".
If you are never going to buy anything from us, the free pieces need no account: ten calculators including DSCR, debt yield and loan sizing, a free ten-year multifamily acquisition model in Excel, and a glossary.
Questions people actually ask
Is OneDrive version history enough on its own?
No. It restores files, which is a safety net rather than a system. It does not record which assumption moved or why, Microsoft says file version history is retained for 30 days, and on a work or school account an administrator may have turned versioning off.
Can I just put my models in Git?
You get a durable history with a commit message on every save. What you do not get is comparison or merging: Git's documentation says a binary path produces "Binary files differ" instead of a diff, and an unset merge attribute takes the current branch's version and declares a conflict. Fine as an archive, useless for reconciling two people's edits.
Can two of us work in the same model at once?
Technically yes, on OneDrive or SharePoint Online in .xlsx, .xlsm or .xlsb. But Microsoft's conflict rule is that the last save wins, and its advice is to assign separate areas or sheets. In a model where every tab feeds the returns, split the work by deal rather than by tab.
How do I stop a colleague overwriting my assumptions?
Data validation first, then unlock only the input cells and protect the sheet. Microsoft is explicit that sheet protection "isn't intended as a security feature", so it prevents mistakes rather than determined edits.
Do I need to keep every version?
Keep the ones that left your hands: the version behind the offer, the lender package and the investment committee memo. Archive the rest. A Microsoft 365 library keeps the last 500 versions by default, which is plenty as long as your filenames say which is which.
Sources
- Microsoft, Restore a previous version of a file stored in OneDrive: support.microsoft.com
- Microsoft, Collaborate on Excel workbooks at the same time with co-authoring: support.microsoft.com
- Microsoft, About the shared workbook feature: support.microsoft.com
- Microsoft, Protect a worksheet: support.microsoft.com
- Microsoft, Apply data validation to cells: support.microsoft.com
- Microsoft, How does versioning work in a list or library: support.microsoft.com
- Microsoft, Enable and configure versioning for a list or library: support.microsoft.com
- Git, gitattributes documentation: git-scm.com
- Altus Group, ARGUS Enterprise: altusgroup.com