Business Professionals
Power BI | Power Pivot | Power Query | DAX
Cloud Flows | RPA | AI Builder | Copilot
60+ Formulas | Data Stories | Advanced Reporting & Modeling
VB Programming | Report Automation |
MS-Office Automation
Techno-Business Professionals
Power BI | Power Query | Advanced DAX | SQL - Query &
Programming
Microsoft Fabric | Power BI | Power Query | Advanced DAX |
SQL - Query & Programming
Power BI | Power Apps | Power Automate | Copilot Studio | Power Pages | Dataverse
Microsoft Power Apps | Microsoft Power Automate
Power BI | Adv. DAX | SQL (Query & Programming) |
VBA | Python | Web Scrapping | API Integration
Power BI | Power Apps | Power Automate |
SQL (Query & Programming)
Power BI | Adv. DAX | Power Apps | Power Automate |
SQL (Query & Programming) | VBA | Python | Web Scrapping | API Integration
Power Apps | Power Automate | SQL | VBA | Python |
Web Scraping | RPA | API Integration
Technology Professionals
Power BI | DAX | SQL | ETL with SSIS | SSAS | VBA | Python
Power BI | SQL | Azure Data Lake | Synapse Analytics |
Data Factory | Databricks | Power Apps | Power Automate |
Azure Analysis Services
Microsoft Fabric | Power BI | SQL | Lakehouse |
Data Factory (Pipelines) | Dataflows Gen2 | KQL | Delta Tables | Power Apps | Power Automate
Power BI | Power Apps | Power Automate | SQL | VBA | Python | API Integration
Power BI | Advanced DAX | Databricks | SQL | Lakehouse Architecture
Business Professionals
Power BI | Power Pivot | Power Query | DAX
Cloud Flows | RPA | AI Builder | Copilot
60+ Formulas | Data Stories | Advanced Reporting & Modeling
VB Programming | Report Automation |
MS-Office Automation
Techno-Business Professionals
Power BI | Power Query | Advanced DAX | SQL - Query &
Programming
Microsoft Fabric | Power BI | Power Query | Advanced DAX |
SQL - Query & Programming
Power BI | Power Apps | Power Automate | Copilot Studio | Power Pages | Dataverse
Microsoft Power Apps | Microsoft Power Automate
Power BI | Adv. DAX | SQL (Query & Programming) |
VBA | Web Scrapping | API Integration
Power BI | Power Apps | Power Automate |
SQL (Query & Programming)
Power BI | Adv. DAX | Power Apps | Power Automate |
SQL (Query & Programming) | VBA | Web Scrapping | API Integration
Power Apps | Power Automate | SQL | VBA |
Web Scraping | RPA | API Integration
Technology Professionals
Power BI | DAX | SQL | ETL with SSIS | SSAS | VBA
Power BI | SQL | Azure Data Lake | Synapse Analytics |
Data Factory | Azure Analysis Services
Microsoft Fabric | Power BI | SQL | Lakehouse |
Data Factory (Pipelines) | Dataflows Gen2 | KQL | Delta Tables
Power BI | Power Apps | Power Automate | SQL | VBA | API Integration
Power BI | Advanced DAX | Databricks | SQL | Lakehouse Architecture
LEARN THIS HANDS ON
Power Apps & Power Automate
Your flow runs, the email goes out, the approvals look fine – and then someone notices the numbers don’t match the Excel file. The culprit in many cases: the Excel connector quietly stopping at 256 rows in List rows present in a table unless you turn on pagination.
This post walks through that 256‑row trap and five other practical fixes around Excel + Power Automate, using one realistic scenario and staying close to what the connector actually supports today.
You’ve got a shared workbook in OneDrive for Business:
SalesPipeline.xlsxtblPipelineRegion, Owner, Stage, Amount, CloseDateEvery morning, a cloud flow:
tblPipeline.Region.It works during testing with a small dataset. Then the table grows past 300 rows. Suddenly, the email totals are lower than what people see in Excel.
Root cause: List rows present in a table returns a maximum of 256 items per call by default. Anything beyond that never reaches your filter or aggregation.
Let’s fix that properly, and then deal with the other common traps you’ll hit once the data and flows grow.
When you add Excel Online (Business) → List rows present in a table in a cloud flow, the action has an internal page size limit. By default:
Top parameter is empty (or not set).That means:
This is not an error state. The action succeeds, and your flow continues with a truncated dataset.
To get all rows:
5000.Important details:
In our pipeline scenario, if tblPipeline has ~1,200 rows, a threshold of 2000 is safe. Your daily KPI email now sees the full dataset.
You don’t always want all rows. Keeping the default limit can be useful when:
In those cases, explicitly set the Top parameter to your intended limit (e.g. 100) so that future readers of the flow understand that truncation is deliberate, not accidental.
Once you turn on pagination, the next performance trap is pulling thousands of rows from Excel and then filtering in Power Automate.
In our scenario, you only need deals closing in the next 7 days. Pulling the entire table and then applying a Filter array action works, but it’s slower and burns more API calls than necessary.
The Excel connector supports an OData Filter Query for List rows present in a table when the table is in:
The filter runs on the service side, before rows are sent to your flow.
Example: only rows where CloseDate is within the next 7 days.
formatDateTime(utcNow(), 'yyyy-MM-dd')
and
formatDateTime(addDays(utcNow(), 7), 'yyyy-MM-dd')
These return ISO‑formatted date strings that work reliably in OData comparisons when CloseDate is stored as a date in the Excel table.
CloseDate ge '@{formatDateTime(utcNow(), ''yyyy-MM-dd'')}' and CloseDate le '@{formatDateTime(addDays(utcNow(), 7), ''yyyy-MM-dd'')}'
Notes:
yyyy-MM-dd is a safe choice for date columns).This way, you only retrieve rows that match the date range, and pagination still applies if that subset exceeds 256.
Situations where you fall back to Filter array:
In those cases, you still want pagination on, but you accept that filtering happens in the flow. The key is to be explicit: document in a comment that filtering is downstream and pagination is required to avoid silent truncation.
Another frequent source of pain in Excel + Power Automate flows is schema drift: someone adds a column, renames one, or converts the table back to a range.
In our pipeline scenario, the sales team might:
Probability column.Amount to DealAmount.Each change affects how List rows present in a table returns data.
Practical safeguards:
Lock down the table name
tblPipeline.Avoid removing table formatting
Treat column renames as breaking changes
If you can’t fully control schema changes, you can reduce coupling by:
item()?['Amount'] instead of relying on dynamic content labels.This doesn’t protect you from a column being removed, but it makes it easier to see and fix issues when they occur.
Excel Online (Business) is not a database. It has limited concurrency support, and multiple flows writing to the same workbook and table can cause:
In the pipeline scenario, you might have:
tblPipeline for the morning KPI email.For read‑only flows like the KPI email:
Read operations are less likely to hit concurrency issues, but heavy load or frequent writes from other flows can still cause throttling.
For flows that write to Excel:
Minimize the number of write actions
Avoid parallel branches when writing to the same table
Consider moving writes to a more robust store
If you keep Excel as the store, treat it as a single‑writer system where flows are coordinated to avoid overlapping writes.
The 256‑row trap is often the first sign that Excel is being used as a backend for things it wasn’t designed to handle.
In our scenario, once tblPipeline grows into the thousands of rows and feeds multiple flows, you start seeing:
At that point, consider moving the core data to a store that Power Automate handles more naturally.
Pros:
Migration pattern:
SalesPipeline with columns matching tblPipeline.CloseDate directly.Excel can still be used as a reporting or ad‑hoc analysis front‑end via Get Data → From SharePoint List.
If your environment already uses Dataverse:
SalesPipeline as a Dataverse table.This adds more structure and governance at the cost of slightly more setup.
The worst thing about the 256‑row default is that it fails silently. You need patterns in your flows that make truncation obvious.
In the KPI email flow, add a quick guard:
length(body('List_rows_present_in_a_table')?['value'])
256, send an alert email to the owner or post a message to a monitoring channel.This doesn’t prove truncation (you might genuinely have 256 rows), but it tells you when you’re at the default limit and should double‑check pagination.
Periodically:
If you see fewer items than expected, revisit pagination and thresholds.
Any time you add List rows present in a table in a production flow, treat pagination as a mandatory checklist item:
That one habit prevents the Excel + Power Automate 256‑row trap from quietly corrupting your downstream logic.
This article reflects how teams are pushing Excel into lightweight backend roles for automation, and why careful use of pagination, filters, and alternative stores like SharePoint lists matters most in environments where flows depend on growing tables.
Professionals who want to apply these patterns to their own data can explore Excelgoodies' Power Automate Course programme - taught live by instructors, with certification awarded once a real project is running at work.
Insights compiled through ongoing industry research and discussions within the Excelgoodies Analytics Community.
Power Automate
New
Next Batches Now Live
Power BI
SQL
Power Apps
Power Automate
Microsoft Fabrics
Azure Data Engineering