Replacing an Excel Ledger with a SharePoint List — Sharing, History, and Flow Integration to Put an End to the Broken Ledger

· · Power Automate, SharePoint, Microsoft Lists, Excel, Microsoft 365, Ledger Management, Business Automation, Technical Consulting

“I opened Case Management Ledger.xlsx and it was read-only. I had no idea who had it open, so I made a copy and updated that — and now nobody knows which one is current.” “I sorted it and the rows shifted, so a note ended up attached to a different case.” We get these consultations frequently from companies running case management, inquiry management, equipment management, and similar ledgers in Excel on a shared folder.

Excel is excellent as a spreadsheet application, but as “the place where a ledger that several people add to and update concurrently lives,” it is structurally unworkable. If you have already deployed Microsoft 365, a purpose-built container for this use already sits in your hands: SharePoint lists (Microsoft Lists). Row-level concurrent editing, change history, typed input, and the path to notification and approval via Power Automate — everything a ledger needs is there.

This article sets out where the limits of an Excel ledger start to bite, how to decide on replacing it with a SharePoint list and how to carry out the migration, the design cautions starting with the 5,000 list view threshold, and how Power Automate integration turns the ledger into a “living ledger.”

1. The Bottom Line First

  • The root cause of Excel ledger accidents (overwrites, row misalignment, no idea which version is current) is that the whole file is the unit of editing. A SharePoint list is edited and version-tracked per row (item), which structurally makes this class of accident far less likely.
  • A SharePoint list can store up to 30 million items per list, and attachments on a list item can be up to 250 MB per file.1
  • The much-discussed 5,000 limit is the “list view threshold”, not a cap on how many items you can store. With indexed columns and narrowed views, you can operate well beyond 5,000 items.23
  • SharePoint Online lists have version history enabled from the moment they are created (50 versions by default). “Who changed which field, and when” is recorded from day one.4
  • Microsoft Lists has an import feature that creates a list from an Excel workbook. The real work of migration, though, is unmerging cells, getting to one row per record, cleaning up inconsistent notation, and designing column types — all before you import.5
  • The SharePoint connector is a standard connector, so within the scope of a Microsoft 365 license you can build notification, approval, and chaser flows starting from “when an item is created or modified.”67
  • Sheets whose main purpose is aggregation and analysis, and low-frequency ledgers touched by only one or two people, are fine as they are in Excel. Conversely, business data with many relationships, hundreds of thousands of records, or a need for transactional consistency belongs not in a list but in Dataverse or a business system (custom development).

2. Where the Limits of an Excel Ledger Bite

Across the consultations we take on, the points at which an Excel ledger starts to break down are broadly the same.

  • Concurrent editing and overwrites. An Excel file on a shared folder becomes read-only if someone else has it open. People who cannot wait make a copy, “Ledger_latest.xlsx” and “Ledger_0715_Tanaka_edits.xlsx” multiply, and nobody knows which is authoritative. Co-authoring in the browser version of Excel does avoid the problem of not being able to open it simultaneously, but the problems below remain.
  • Row misalignment and destruction. Pasting while a filter is applied, mis-selecting the range for a sort, inserting a row that shifts only the adjacent columns. The freedom of a spreadsheet is, for a ledger, also the freedom to destroy data. And the only clue as to who broke it and when is the file’s modified timestamp.
  • Input rules are not honored. You can decide “status must be one of these five” and “dates are yyyy/mm/dd,” but a cell will take anything. Even with data validation configured, a copy and paste overwrites it easily. Inconsistent notation comes back as the cost of aggregating and searching later.
  • Macros become one person’s property. A ledger where transcription or aggregation was automated in VBA turns into a black box the moment its author transfers or leaves. Macro-enabled workbooks also tend to suffer worse damage when a file is corrupted.
  • You cannot separate “viewing” from “editing”. You end up handing an editable file even to people who only need to read it, and permissions cannot be separated.

At the same time, some ledgers are fine left in Excel. Those with one or two updaters and low update frequency; summary tables produced and distributed monthly; analysis sheets where formulas, pivots, and charts are the main act; forms where the print layout itself carries meaning. In these, either the “several people updating concurrently” problem does not arise, or it does but Excel’s strengths (calculation and layout) outweigh it. The criteria for deciding on replacement are summarized in the table in Section 7.

3. What a SharePoint List Is — Not a Grid of Cells but a “Database of Rows”

A SharePoint list is a feature of SharePoint included in Microsoft 365, and the same thing can be created and used from the Microsoft Lists app (opening a list in SharePoint directs you to Microsoft Lists — they are the same underlying object).8 The biggest difference from Excel is that the unit of editing is the row (item), not the cell.

Aspect Excel ledger SharePoint list
Unit of editing The whole file (cells edited freely) Row = item
Column types None (validation can be broken) Typed (choice, date, number, person, yes/no, lookup, and so on)9
Change history Dependent on file version control Version history per item (enabled by default, 50 versions)4
Presentation Tends to fork via copied sheets Multiple views defined (filter, sort, group)
Input Direct cell entry Input form (required fields, type checking)
Permissions File level only Configurable at list level and item level
Environment Machines that have Excel Browser, Teams tab, mobile5

A few notes on the features that matter in practice.

  • Column types. With a choice column, status can only take the values you defined. A person column is tied to organizational accounts, so inconsistent renderings of an assignee’s name disappear. A date column can only take a date, which makes deadline evaluation and sorting reliable. A lookup column lets you build simple relationships that reference values in another list.910
  • Views. You can share the same data in purpose-specific presentations: “my items,” “due this month,” “incomplete only.” The practice of copying sheets in Excel and distributing them per person becomes unnecessary.
  • Version history. For each item, when, by whom, and which column was changed is recorded, and you can revert to an earlier version. In SharePoint Online this is enabled by default from the moment the list is created.4 “Someone deleted it” and “I want to know the previous value” get answered by a standard feature.
  • Alerts and rules. Simple rules that send a notification when a value changes can be configured on the list side alone.5 Elaborate notifications and conditional branching are Power Automate’s job (Section 6).
  • Teams and mobile. Lists can be added as a tab in a Teams channel, and the same list can be worked with from desktop, web, and mobile.5 That makes it practical to update inquiry status from a phone out in the field.

4. The Practicalities of Migration — Clean Up → Design Columns → Import → Views → Switch Over

Migrating from an Excel ledger proceeds in the following order. The first two steps (cleaning up and column design) decide success or failure far more than the tool operations do.

(1) Cleaning Up the Existing Data Comes First

An Excel ledger will always contain structures that were only permitted because it was a spreadsheet. A list has a flat structure of one row = one item, so you tidy up on the Excel side first.

  • Unmerge cells (merged cells cannot be brought into a list)
  • Get to one row per record (resolve multiple cases in one cell, and single records spanning multiple rows)
  • Get to a single header row (rename columns where there is a two-tier header)
  • Standardize inconsistent notation (“In progress / in-progress / WIP” → align to the choice column’s candidate values)
  • Delete intermediate subtotal rows and decorative blank rows
  • Decide, for formula cells, whether to “keep them as values” or “reproduce them on the aggregation side after migration”

This cleanup is a migration task and at the same time a stocktake of the ledger’s design. It is normal to turn up a great many instances of “nobody has ever filled this column in” and “these two columns meant the same thing.”

(2) Designing Column Types

Decide which list column type each column of the cleaned-up Excel becomes. The standard choices are as follows.

Ledger field List column type Point to note
Status, category, priority Choice column Settle the candidate values here. Do not allow free text
Assignee, requester Person column Tied to organizational accounts; usable for notifications and “my items” views
Date received, due date, completion date Date column The basis for deadline evaluation and chaser flows
Amount, quantity Number column Any column that will be aggregated must be a number type
Customer name, subject Single line of text If there is a customer master in a separate list, consider a lookup column too10
Progress notes Multiple lines of text If mostly append-only, the version history lets you follow it

Microsoft Lists can create a list by importing data from an Excel workbook, so an existing ledger can be your starting point.5 In practice, though, we recommend not leaving everything to the import’s automatic detection but deciding column types first and verifying them during the import (or designing an empty list first and pouring the data in afterwards). Choice and person columns in particular are the columns that determine the ledger’s quality, so if you start operating with them left as text columns, half the point of migrating is lost.

Also, for ledgers of more than a few thousand rows, do not plan on entrusting everything to a single import. From the moment the data lands, the 5,000-item threshold design covered in Section 5 becomes your first problem, and the larger the import, the heavier the column-type verification and the rework if it fails. The safe approach is to create an empty list with the column design settled, prepare the indexed columns and narrowed views that address the threshold, and then load the data in sensibly sized batches (rehearsing once with a subset of the real data).

(3) Views and Permissions

Set the default view to the shape of day-to-day work — something like “incomplete only, ascending by due date” — and provide the all-items view separately. This is also preparation for the 5,000-item threshold discussed below. For permissions, start by separating “people who can edit” from “people who can view only” at the list level, and limit fine-grained item-level permissions to cases where they are genuinely necessary (changing permissions once item counts grow is constrained; see Section 5).

(4) Parallel Running and Switching Over

Ideally you set a migration date and switch over all at once, but in reality there will be people who “carry on writing in Excel for a while.” If you do run a parallel period, declare that “the list is authoritative and the Excel file is a reference copy,” and make the Excel file read-only — that is the safe route. Let dual operation drift on and neither one ends up authoritative.

5. Limits and Design Cautions — 5,000, Attachments, and “What Excel Has That Lists Don’t”

Understanding the 5,000 List View Threshold Correctly

SharePoint Online has a default threshold of 5,000 on the number of items a single view (display, sort, filter, group, and similar operations) can handle at once. Exceed it and you get the error “The number of items in this list exceeds the list view threshold,” or failures when sorting or filtering a column.23

The important point here is that this is not a cap on how many items you can store. The list itself can hold up to 30 million items.1 What is restricted is “a query that sweeps a range of more than 5,000 items at once,” and the countermeasures are documented officially.

  • Index the columns you filter on. Create column indexes on the columns that serve as axes for sorting and filtering (date received, status, assignee, and so on). Note, however, that indexes can only be added or removed while the list is under 20,000 items, so design this before the list grows large.3
  • Keep every view under 5,000 items. Build filters on indexed columns into the default view — “this fiscal year,” “incomplete only,” “assignee = me.”3

For a small or mid-sized company’s case or inquiry ledger, a few hundred to a few thousand entries a year is typical, so this looks irrelevant for the time being — but a few years of accumulation gets you there. Create a default view filtered by fiscal year plus indexed columns from the start and you will not have to scramble later. Note also that once item counts exceed 100,000, other constraints on scale appear, such as being unable to break permission inheritance at the list or folder level.1 If operations in the hundreds of thousands of records are visible from the outset, the decision is to choose a database (Dataverse or SQL) rather than a list (Section 7).

Handling Attachments — Attachment Column or Document Library?

You can attach files to list items, up to 250 MB per file.1 In practice, though, two things need care.

  • List version history records changes to columns, but changes to attachments are not versioned.4
  • When manipulating attachments from Power Automate, the SharePoint connector handles attachments up to 90 MB.6

For files that themselves need version control or co-authoring — quotations, reports — a configuration where you store them in a document library and link them to the list by URL or reference number, rather than as list attachments, is easier to work with. Treat the attachment column as suited to light evidence subordinate to the item, such as “one scanned FAX page.”

What Excel Has That Lists Don’t

The thing we always check in a migration consultation is how much you depend on “things that were possible because it was Excel.”

  • Free-form layout. Merged cells, two-tier headers, and tables where color alone carries meaning cannot be reproduced. Meaning moves into columns; presentation moves into views.
  • Complex formulas across cells. Lists do have calculated columns, but they are no substitute for a complex web of calculations referencing an entire sheet, or for pivots. Split the roles so that aggregation and analysis are done by connecting the list’s data to Excel or Power BI. There are official procedures both for connecting to a list from Power BI Desktop to build a report and for creating a semantic model directly from a list in the Power BI service and refreshing it on a schedule.1112
  • Print layout. If the ledger doubled as the print form, the list’s screen is not a printable document. If printing is a requirement, you need a design that pours exported data into an Excel template, or a separately built reporting layer.

In short, the correct shape of the replacement is to reorganize around a division of labor: “input and sharing in the list, calculation and layout in Excel/Power BI.”

6. Power Automate Integration Makes the Ledger Move

The biggest dividend of moving to a SharePoint list is integration with Power Automate. The SharePoint connector is a standard connector, so you can build cloud flows within the scope of any Microsoft 365 license that includes standard connectors.6 Lists come with triggers such as “when an item is created” and “when an item is created or modified,” so registering or updating the ledger can itself be the starting point of a flow.67

Clean up, design columns, migrateTranscribe responsesItem created/modified triggerConnect/exportExisting Excel ledgerSharePoint listCase and inquiry ledgerMicrosoft FormsIntake for requestsPower AutomateCloud flowNotify the assignee via Teams/emailRoute into an approval flowScheduled runChase overdue itemsExcel aggregation, Power BI reports

There are three representative patterns.

  • Notification. Send a Teams notification to the relevant channel when a new inquiry is registered; email the person when the assignee column is set. The ledger changes from something you “go and look at” to something that “tells you.”
  • Approval. When the status changes to “approval requested,” start an approval flow and write the result, approver, and timestamp back into columns of the list. This configuration, where the approval trail lines up on the same row of the ledger, is covered in detail in the separate article “Building an Approval Workflow in Power Automate — Digitizing Paper and Email-Based Approval Requests.”13
  • Chasers and stocktakes. On a schedule each morning, extract items that are “overdue and incomplete” and send each assignee a consolidated notification. Reminder flows using SharePoint are documented officially as a standard scenario.7 The design of scheduled runs including business-day checks and month-end processing is set out in “Designing Scheduled Flows in Power Automate — Month-End Processing, Business-Day Checks, and Reminders in Practice.”

There is just one design caution. If a flow using the “when an item is created or modified” trigger updates the list itself, that update can start the same flow again, producing an infinite loop. Rather than discarding the case in a later conditional branch, the standard approach is to write “only start when the status has a particular value” on the trigger itself, as a trigger condition. Updates that do not satisfy the condition produce no run at all.14 A trigger condition only stops the loop, however, when it is paired with the fact that the flow’s own write-back makes the condition false. If your flow starts “when the status is ‘approval requested’,” then part of the design is that the last thing it does is always update the status to some other value such as “in progress” or “approved.” If the status is still “approval requested” after the write-back, that update makes the condition true again and approval requests and notifications go out repeatedly. If you genuinely need a write-back that does not change the column used in the condition, add a “processed” flag column and include it in the trigger condition.

If you want to widen the intake further, a configuration where Microsoft Forms receives the input and a flow transcribes it into the list is effective (see “Building an Intake for Requests with Microsoft Forms and Power Automate”). Also, everything within the scope of this article can be built with standard connectors, but reaching for Dataverse or SQL takes you into premium license territory.15 The dividing line is set out in “Power Automate Licensing and the Boundary Between Standard and Premium Connectors.”

7. Decision Table — Stay in Excel / Move to a List / Build a Business App or Database

Situation Decision
One or two updaters, low frequency. Aggregation/analysis or print layout is the main purpose Stay in Excel. Don’t force a migration
Several people add and update entries day to day. State, assignee, and deadlines are managed Large value in migrating to a SharePoint list
You want to feed notification, approval, and chasers. You want to enforce input types List + Power Automate. The sweet spot of this article
References between lists — customers, cases, line items — have grown to two or three levels Lookup columns become painful to maintain. Consider a database such as Dataverse15
Hundreds of thousands of records, or view operations over 5,000 items are routine A database plus a business application from the outset is cheaper than the design effort a list demands2
Simultaneous updates across multiple tables (orders and stock, say) where consistency is essential Transactions are required. This is business system (custom development) territory
Report output, barcodes, or integration with external systems are central requirements A list alone will not contain it. Consider a dedicated system or custom development

As a rule of thumb, we take the view that a list is enough for as long as the thing can be called a “ledger,” and that starting to make a list stand in for a business system is a red flag. Once lookup columns proliferate, flows tangle around each other, and views created to work around the threshold start multiplying, you have a problem that should be solved with a database and a business application. The virtue of lists is that they let you operate safely, on standard features with little additional cost, for the several years it takes to get there.

8. Summary

The problem with an Excel ledger on a shared folder is structural, not a matter of how careful the person handling it is. As long as the whole file is the unit of editing, overwrites, row misalignment, and uncertainty about which version is current will keep recurring. Move to a SharePoint list and editing becomes row-level, input becomes typed, changes are retained in version history, and permissions can be split by role.

The real substance of migration is “cleaning the data” and “designing column types” far more than the import operation itself. And once you understand that the 5,000 threshold is a limit on views, and prepare indexed columns and narrowed views from the start, you can use it with confidence for a long time. Decide the division of labor between attachments and document libraries, and leave calculation and layout to Excel/Power BI. A ledger that achieves this division of labor grows into a “living ledger” that runs notification, approval, and chasers automatically from Power Automate triggers.

And when the list starts to hurt, that is the sign to move on to Dataverse or a business system. How much to do with standard features, and where to start solving things with development — we take on consultations that start with exactly that boundary.

KomuraSoft LLC handles everything from design consultations on turning Excel ledgers into SharePoint lists and integrating them with Power Automate, through to custom development of the business databases and business applications that a list cannot contain.

References

  1. Microsoft Learn, SharePoint limits. On a list being able to store up to 30 million items, list item attachments being up to 250 MB per file, and being unable to break or re-inherit permission inheritance on lists and folders above 100,000 items.  2 3 4

  2. Microsoft Learn, “The number of items in this list exceeds the list view threshold” when you view lists in Microsoft 365. On the list view threshold being configured at 5,000 items by default, and the display error that occurs when it is exceeded.  2 3

  3. Microsoft Learn, “Cannot show the value of the filter” error when you try to sort or filter a column in SharePoint Online. On sorting and filtering failing when the threshold is exceeded, the workaround of staying under 5,000 items with indexed columns and narrowed views, and the restriction that indexes can only be added or removed up to 20,000 items.  2 3 4

  4. Microsoft Learn (Microsoft 365 community documentation), Versioning in SharePoint. On versioning being enabled from creation for SharePoint Online lists (50 versions by default), the time, author, and changed columns being recorded and restorable, and changes to list attachments not being versioned.  2 3 4

  5. Microsoft Learn, Manage the Lists app for your organization in Microsoft Teams. On tracking issues, assets, inquiries, and the like in Microsoft Lists; views, rules, and alerts; creating lists from templates, existing lists, or imported Excel workbook data; and use via Teams tabs, desktop, web, and mobile.  2 3 4 5

  6. Microsoft Learn, SharePoint - Connectors. On the SharePoint connector being in the Standard class in Power Automate, triggers such as “when an item is created” and “when an item is created or modified,” and the connector handling list item attachments up to 90 MB.  2 3 4

  7. Microsoft Learn, Use SharePoint and Power Automate to build workflows. On the integration between Power Automate and SharePoint, triggers that watch for changes to lists and libraries, and representative scenarios such as approval and reminder flows.  2 3

  8. Microsoft Learn, Integrate SharePoint Online into Power Apps overview. On being directed to Microsoft Lists when creating or viewing a list in SharePoint, the same list being accessible from both, and lists being usable as a Power Apps data source. 

  9. Microsoft Learn, Connect to SharePoint from a canvas app. On the correspondence between SharePoint list column types (yes/no, date and time, choice, lookup, person, number, currency, single and multiple lines of text, and so on) and Power Apps data types.  2

  10. Microsoft Learn, Link lists using a lookup column in Power Apps. On being able to relate to another list with a lookup column, and choice columns being appropriate for short fixed lists.  2

  11. Microsoft Learn, Create a report on a SharePoint List in Power BI Desktop. On the procedure for connecting to a SharePoint list from Power BI Desktop and building a report. 

  12. Microsoft Learn, Create a Power BI semantic model directly from a SharePoint list. On being able to create a Power BI semantic model directly from a SharePoint list, and keeping the data current with manual or scheduled refresh. 

  13. Microsoft Learn, Get started with approvals. On the basics of Power Automate’s approval capability, and the Approvals connector being available as a standard connector. 

  14. Microsoft Learn, Customize your triggers with conditions. On setting trigger conditions on SharePoint’s “when an item is created or modified” trigger, and no run occurring at all for events that do not satisfy the condition. 

  15. Microsoft Learn, List of all Premium tier connectors. On the Microsoft Dataverse connector being classified as a premium-tier connector.  2

Recent articles sharing the same tags. Deepen your understanding with closely related topics.

These topic pages place the article in a broader service and decision context.

This article connects naturally to the following service pages.

Frequently Asked Questions

Common questions about the topic of this article.

Can a SharePoint list really only hold 5,000 items?
No. The 5,000 figure is the list view threshold — the default limit on the number of items a single view (display, sort, filter) can handle at once. The list itself can store up to 30 million items. To operate beyond 5,000 items, index the columns you filter on and make views that are always narrowed to fewer than 5,000 items (this fiscal year, by assignee, and so on) the defaults. Because adding an index is restricted once a list exceeds 20,000 items, it is important to design this before the list grows.
Can I create a SharePoint list directly from an Excel file?
Yes. Microsoft Lists can create a list by importing data from an Excel workbook, so an existing ledger can be your starting point. Before you do, though, you need to unmerge cells, restructure the data to one row per record, standardize the header row, and clean up inconsistent notation. Column types such as choice, person, and date columns are also the heart of what makes a list valuable, so rather than leaving them to the import, we recommend deciding your column design first and importing afterwards.
When is it fine to stay with an Excel ledger?
If only one or two people update it and they do so infrequently, if it is really an aggregation or analysis worksheet rather than a ledger, or if complex formulas, pivots, or print layouts are the main point, then staying with Excel is usually no problem. Conversely, a ledger where several people add and update entries day to day, where you manage state (in progress, complete, and so on), where you want to trace change history and who did what, or where you want to feed notifications and approvals, is well suited to a SharePoint list.
What can Power Automate do once the ledger is a SharePoint list?
The SharePoint connector is a standard connector, so within the scope of a Microsoft 365 license you can start cloud flows from triggers such as "when an item is created" and "when an item is created or modified." Typical examples are a Teams notification for a new entry, an approval flow triggered by a state change, and periodic chasers for overdue items. The accumulated data can also be referenced from Excel or Power BI for aggregation and reporting, so the ledger becomes a hub for notification, approval, and reporting.

Author Profile

Profile page for the article author.

Go Komura

Representative of KomuraSoft LLC

Focused on Windows software development, technical consulting, and investigations into failures that are difficult to reproduce.

Back to the Blog