How to Freeze Columns in Power BI Matrix Visual

Cody Schneider7 min read

Building a wide matrix in Power BI is a great way to display detailed data, but it immediately creates a common problem: as you scroll to the right, the row labels disappear, and you lose all context. You're left staring at a sea of numbers, trying to remember which product, region, or campaign you're actually looking at. This article will show you a simple and effective workaround to freeze the first column of your matrix, keeping your row headers visible no matter how far you scroll.

Why Can’t You Just Freeze Columns in Power BI?

If you're coming from an Excel background, your first instinct is probably to look for a "Freeze Panes" button. It’s a frustrating moment when you realize there isn't one directly in the Power BI matrix visual. The Power BI matrix is a powerful, dynamic visual that can handle complex hierarchies and measure calculations, which makes a simple "freeze" function more complicated to implement than in a static spreadsheet grid.

But don't worry. While there isn't a one-click solution, there is a widely-used and reliable technique that mimics the "freeze pane" effect perfectly. It involves using two matrix visuals that are cleverly formatted and aligned to look and act like a single, cohesive table.

The Two-Matrix Method: A Step-by-Step Guide

The core idea is to create one narrow matrix that contains only your row headers (your "frozen" column) and a second, wider matrix next to it that contains all your data values. By aligning them perfectly and grouping them, you create the illusion of a single, scrollable table with a fixed first column.

Step 1: Create the "Row Headers" Matrix

First, we'll build the part of the table that will remain stationary. This visual will act as our frozen column.

  • Add a Matrix to Your Canvas: Drag a new matrix visual onto your Power BI report canvas.
  • Populate the Rows: In the Fields pane, drag the name, product category, etc. - that you want to freeze into the Rows bucket of this new matrix. Do not add anything to the Columns or Values buckets.
  • Resize the Matrix: Adjust the width of this matrix so it's just wide enough to comfortably display your row labels. This is your static, frozen column.

At this point, you should have a very simple-looking visual on your canvas that is just a single column listing out your row categories.

Step 2: Create the "Data Values" Matrix

Next, we will create the scrollable section containing all the metrics. This matrix will sit directly next to our frozen column.

  • Add a Second Matrix: Drag another new matrix visual onto the canvas and place it immediately to the right of the first one.
  • Populate All Fields: For this matrix, populate it just like you normally would. Drag the same fields into the Rows bucket. Then, drag your desired fields into the Columns and Values buckets.
  • Resize and Align: Stretch this second matrix to the right, leaving enough space for all your data columns to be displayed. Make sure the top edges of both matrices are perfectly aligned.

You now have two separate tables sitting side-by-side. The next step is the most important: formatting them to look like one seamless visual.

Step 3: Align and Format for a Seamless Experience

This is where the magic happens. We need to tweak the formatting options so the user can't tell they are interacting with two different objects. Select each matrix and navigate to the Format your visual pane (the paintbrush icon) to make these changes.

For the "Data Values" Matrix (the right one):

  • Turn off Row Header Text: Go to Row headers and turn the Values color to white (or whatever your background color is). This makes the duplicated row labels "disappear," so they only show up in your frozen column. Alternatively, you can drastically shrink the row header column by dragging its border all the way to the left, but changing the color is often faster.
  • Turn off "+"/"-" Icons: Still in the Row headers section, turn off the Icons toggle. This prevents the drill-down icons from appearing on your now-invisible row headers.

For Both Matrices:

  • Sync Row Heights: For the illusion to work, every row must be the same height in both tables. Go to Grid > Options and set the Global font size to be the same for both visuals. Crucially, adjust the Row padding to be identical for both as well.
  • Disable Word Wrap: Go to Column headers and turn off Word wrap. Do the same for Row headers. This prevents a long header from increasing the height of a single row, which would throw off the alignment of the entire table.
  • Match Grid and Border Settings: Under the Grid options, ensure the color and thickness for Horizontal gridlines and Vertical gridlines match. If you are using borders on one, make sure they match on the other. Consistency is key.

Step 4: Group the Visuals Together

Once you've aligned the top and bottom of both matrices and are happy with the formatting, you need to lock them together. This ensures they act as a single unit when you move them or when other users interact with the report.

  • Hold down the Ctrl key.
  • Click on the first matrix, then click on the second matrix.
  • Right-click on either of the selected visuals and choose Group > Group.

Now your two matrices are grouped! You can move them around the canvas as one object. When you publish your report, the left matrix (your row headers) will stay fixed, while the right matrix (your data) will have a horizontal scrollbar, giving you that perfect "frozen column" effect.

Tips for Success and Common Pitfalls

Getting this technique right can sometimes require a bit of finesse. Here are a few extra tips to keep in mind.

  • Sorting is Key: Remember that these are two separate visuals. If a user tries to sort the data, they must click on the header of the visual where that field exists. To sort by your row category (e.g., alphabetically), they need to click the header of your "frozen" row headers matrix. To sort by a value, they need to click the corresponding column header in the "data values" matrix.
  • Slicers and Filters Work Natively: The good news is that any page-level slicers or filters you use will affect both matrices simultaneously. Because they share the same row fields, they will filter and update in sync, maintaining the illusion of a single table.
  • Pay Attention to Totals: Double-check how subtotals and grand totals are displayed. You may want to turn totals off in the frozen column matrix (under the Format pane > Subtotals) to avoid confusing visual breaks.

Final Thoughts

Creating a frozen column in a Power BI matrix showcases a common challenge with traditional BI tools: they are incredibly powerful, but often require clever workarounds for what seems like a simple feature. By using an aligned pair of matrix visuals, you can perfectly replicate the "freeze panes" functionality from Excel and make your wide data tables much more user-friendly.

We believe getting insights from your data shouldn't require searching for formatting hacks or spending hours configuring visuals. At Graphed, we built a platform that lets you bypass this complexity entirely. Instead of wrestling with settings panes, you can connect your data sources and simply ask in plain English, "Show me product sales by region and campaign for last quarter," and get an interactive dashboard instantly. Our goal is to handle the tedious report-building for you, so you can focus on making decisions, not aligning pixels.

Related Articles

How to Connect Facebook to Google Data Studio: The Complete Guide for 2026

Connecting Facebook Ads to Google Data Studio (now called Looker Studio) has become essential for digital marketers who want to create comprehensive, visually appealing reports that go beyond the basic analytics provided by Facebook's native Ads Manager. If you're struggling with fragmented reporting across multiple platforms or spending too much time manually exporting data, this guide will show you exactly how to streamline your Facebook advertising analytics.

Appsflyer vs Mixpanel​: Complete 2026 Comparison Guide

The difference between AppsFlyer and Mixpanel isn't just about features—it's about understanding two fundamentally different approaches to data that can make or break your growth strategy. One tracks how users find you, the other reveals what they do once they arrive. Most companies need insights from both worlds, but knowing where to start can save you months of implementation headaches and thousands in wasted budget.