From Excel to Power BI: A Step-by-Step Migration Playbook
The most common migration mistake is treating Power BI as a fancier chart tool layered on top of existing Excel files. That approach fails spectacularly, and it's why many finance teams give up on Power BI after three months.
I've migrated teams from Excel to Power BI multiple times. Here's what actually works.
When to Migrate (and When Not To)
Migrate when:
- Reports take hours to update manually
- Files crash with large datasets (Excel's hard limit: 1,048,576 rows)
- Multiple people need simultaneous access
- You need real-time or near-real-time data
- Formulas are scattered across dozens of spreadsheets
Don't migrate when:
- Your data fits comfortably in one Excel file (<100K rows)
- Reports are used by one person
- The process is genuinely ad-hoc (not repeatable)
- Your team isn't ready to learn new tools
The 5-Step Migration Process
Step 1: Audit Your Current State
Before touching Power BI, inventory everything:
- How many Excel files does the team use for reporting?
- Where does data come from (SAP, manual entry, other systems)?
- What are the key calculations (formulas, pivots)?
- Who uses which reports and how often?
Document everything. I use a simple spreadsheet:
| Report Name | Data Source | Refresh Frequency | Users | Key Calculations |
|---|---|---|---|---|
| Monthly P&L | SAP export | Monthly | 12 | SUMIFS, VLOOKUP, pivots |
| Budget vs Actual | Manual entry + SAP | Weekly | 8 | Variance %, conditional formatting |
| Cost Centre Report | SAP OData | Monthly | 5 | Consolidation, currency conversion |
Step 2: Design the Data Model
This is where Excel thinking will hurt you. In Excel, data and presentation are mixed. In Power BI, they're separate layers.
Build a star schema:
- Fact tables: Transactions, actuals, budgets (the numbers)
- Dimension tables: Date, cost centre, account, entity (the context)
SR Analytics reports that Power BI handles 400GB datasets versus Excel's 1-million-row limit. But that only works if your data model is clean.
Step 3: Migrate Calculations to DAX
Your Excel formulas become DAX measures. Some translate directly, others don't.
| Excel | Power BI DAX | Notes |
|---|---|---|
=SUMIFS(amount, region, "EU") | CALCULATE(SUM(Table[amount]), Table[region]="EU") | More powerful in DAX |
=VLOOKUP(id, table, 2, FALSE) | RELATED() or LOOKUPVALUE() | Relationship-based |
=IFERROR(A1/B1, 0) | DIVIDE([A], [B], 0) | Cleaner syntax |
| Pivot tables | Matrix visual + measures | More flexible |
Key insight: Don't try to replicate every Excel formula. Instead, redesign the calculations for Power BI's strengths. A CALCULATE with filters is more powerful and maintainable than a complex SUMIFS.
Step 4: Build and Test Dashboards
Start with one report — your most-used Excel report. Rebuild it in Power BI with:
- Clean visuals (4-6 per page)
- Proper drill-through for detail
- Row-level security if needed
- Mobile layout
Run both systems in parallel for 4 weeks. Compare outputs daily. This builds trust and catches errors.
Step 5: Train, Deploy, Iterate
According to PowerBI.tips, successful migrations focus on repeatable patterns: inventory what exists, standardize definitions, and build iteratively.
Training plan:
- Week 1: Navigation and basic interaction
- Week 2: Filtering, drilling, exporting
- Week 3: Self-service analysis with Power BI Service
- Week 4: Feedback session and iteration
What Breaks During Migration
Be prepared for these common issues:
| Issue | Why It Happens | Fix |
|---|---|---|
| Numbers don't match | Different aggregation logic | Compare at lowest granularity |
| Reports look different | Visual paradigm shift | Accept the difference; optimize for new medium |
| Users resist change | "My Excel worked fine" | Show time savings with concrete examples |
| Data refresh fails | Source connectivity issues | Test refresh before building visuals |
| Performance is slow | Poor data model | Optimize model before adding complexity |
Real-World Timeline
| Phase | Duration | Effort |
|---|---|---|
| Audit & planning | 1-2 weeks | 20 hours |
| Data model design | 1-2 weeks | 30 hours |
| DAX development | 2-3 weeks | 40 hours |
| Dashboard building | 1-2 weeks | 20 hours |
| Testing & parallel run | 4 weeks | 10 hours |
| Training & rollout | 2 weeks | 15 hours |
| Total | 10-15 weeks | ~135 hours |
The Payoff
| Metric | Excel | Power BI |
|---|---|---|
| Report refresh time | 2-4 hours manual | 30 seconds automated |
| Data row limit | 1M rows | 400GB |
| Concurrent users | 1 (file locked) | Unlimited |
| Version control | None | Built-in |
| Mobile access | Painful | Native |
| Cost of errors | High | Low |
Facing a similar challenge?
📅 Book a Free Call