How to Freeze Columns in Power BI Table Visual

Cody Schneider••8 min read

Ever built a beautiful, wide table in Power BI only to realize that as you scroll right to see the latest data, you lose track of which row you're on? Losing the context of the customer, product, or category column is a common frustration that can make reports difficult to use. This article will show you a powerful workaround to freeze columns in your Power BI table visuals, just like you would in Excel, creating a much more user-friendly and professional-looking report.

GraphedGraphed

Build AI Agents for Marketing

Build virtual employees that run your go to market. Connect your data sources, deploy autonomous agents, and grow your company.

Watch Graphed demo video

Why You Can't Just 'Freeze Panes' in Power BI

If you're coming from a spreadsheet background, your first instinct is probably to look for a "Freeze Panes" button. It’s a bit of a surprise to discover that Power BI's table visual doesn't have a built-in, one-click feature for locking or freezing columns. Unlike Excel, which is designed for static, cell-based data entry and analysis, Power BI is built for dynamic, interactive data visualization. The design philosophy prioritizes cross-filtering, drill-downs, and interactivity between different types of charts and graphs.

While this focus on dynamic visuals is what makes Power BI so powerful, it leaves a gap for this very practical spreadsheet-style feature. But don't worry - just because there isn't a dedicated button doesn't mean it's impossible. With a clever combination of two visuals and a bit of formatting, you can achieve the same effect and give your report viewers the seamless experience they expect.

Free PDF · the crash course

AI Agents for Marketing Crash Course

Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.

The Solution: A Tale of Two Tables

The secret to creating a frozen column effect lies in using two visuals that act as one. We're going to build two separate table visuals and place them side-by-side so they appear to be a single, cohesive table. Here’s the concept:

  • Table 1 (The "Frozen" Pane): This table will contain only the identifying columns you want to remain visible at all times, like Customer Name or Product SKU. This visual will be narrow and will not have a horizontal scroll bar.
  • Table 2 (The "Scrollable" Data): This table will contain all the other data columns that you want to scroll through horizontally - things like monthly sales figures, website traffic, or other metrics. We'll cleverly hide the identifying column here so it doesn't appear twice.

By carefully aligning these two tables, synchronizing their formatting, and grouping them together, you'll create the perfect illusion of a single table with a fixed column. It's an elegant solution that, once set up, is easy to maintain and drastically improves the usability of your reports.

Step-by-Step: Creating a Table with Locked Columns

Ready to build it? Follow these steps to transform your wide, unwieldy tables into streamlined, user-friendly reports.

GraphedGraphed

Build AI Agents for Marketing

Build virtual employees that run your go to market. Connect your data sources, deploy autonomous agents, and grow your company.

Watch Graphed demo video

Step 1: Create Your "Frozen" Left-Side Table

First, we’ll build the part of the table that will stay locked in place. This will hold your key identifier columns.

  1. On your Power BI canvas, add a new Table visual. You can find this in the Visualizations pane.
  2. Drag the column(s) you want to freeze into the "Columns" field well for this visual. For this example, let's use Customer Name.
  3. Resize the visual so it's just wide enough to comfortably display the frozen columns without any extra space. This table should never need a horizontal scrollbar.

Step 2: Create Your "Scrollable" Right-Side Table

Next, we’ll create the table that contains the rest of your data. This is the part that will scroll horizontally.

  1. Add a second Table visual to your canvas and place it to the right of the first one.
  2. Now, drag the same identifying column from the first table into this new visual. In our example, add Customer Name again. This is the most crucial step, as this shared column is what will keep the rows in sync.
  3. Drag all the other data columns you want to be able to scroll through into this second table. This could be things like monthly revenue, units sold, or daily metrics. Arrange them in the order you want them to appear.

At this point, you should have two tables side-by-side, with the left one showing customer names and the right one showing customer names plus all the other data.

Step 3: Align and Synchronize the Tables

Now it’s time to make sure our two discrete tables look and behave as a single entity. Alignment and sorting are key here.

  1. Hide the duplicate column: On the second table (the scrollable one), you don't want to show the Customer Name column twice. In the "Columns" field well for that visual, hover over the Customer Name field, click the dropdown arrow, and select Hide visual. This removes it from view but keeps it active in the background for sorting and synchronization purposes.
  2. Ensure Consistent Sorting: For the rows to line up perfectly, both tables must be sorted by the same column. Click the column header for Customer Name in your first (frozen) table to sort it, say, alphabetically A-Z. The second table should automatically adopt the same sort order because they are linked by the data model selections. Clicking a different header on the right table will break the alignment, which we'll address in the formatting tips below.
  3. Line Them Up: Drag the second table until it is perfectly flush against the right edge of the first table. Use the red guide lines in Power BI to help you snap them together. For pixel-perfect alignment, select both visuals (Ctrl+Click), go to the Format pane > General > Properties. Double-check that they have the same value for Y Position. This guarantees they are perfectly aligned horizontally.

After this step, you should be able to scroll the right-hand table vertically, and the rows should line up perfectly with the "frozen" customer names on the left.

Step 4: Format for a Seamless, Unified Look

The final step is to apply consistent formatting to erase any visual separation between the two tables. This is all about making the illusion perfect.

  1. Use the Format Painter: Get the styling of one table exactly how you want it (font, text size, colors, padding, etc.). Then, select that visual, click the Format Painter icon in the Home ribbon, and click on the other table to instantly apply the same styling.
  2. Unify Borders: Edit the borders to make the tables appear as one. You might turn off the borders for both and then place them inside a visual container or a rectangle shape that has its own border. Or, you can turn off the "Right border" on the first table and the "Left border" on the second.
  3. Handle Totals: If you use a "Total" row, you will need to enable it on both table visuals (Format > Visual > Totals). Format the total row in both tables identically.
  4. Lock the Sort Order: To prevent users from accidentally changing the sort order on the main frozen column, you can hide the sort controls. For the first (frozen) table, go to Format > Visual > Column headers and turn off the icons or change their color to match the background, making them less clickable.
  5. Group the Visuals: Once everything is perfectly positioned and formatted, marquee-select both visuals, right-click, and choose Group > Group. This locks them together into a single object, making it easy to move or resize the combined table on your report canvas without breaking the alignment.

Free PDF · the crash course

AI Agents for Marketing Crash Course

Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.

Pro Tips for a Flawless Freeze Effect

Keep these additional considerations in mind to make your frozen-column tables robust and easy to manage.

  • Don't Forget the Sort: It bears repeating: consistent sorting on the shared identifier column is a non-negotiable for this technique to work. If you find your rows misaligned, double-check that both hidden and visible instances of your key column are sorted in the same direction.
  • Filters and Slicers Work Seamlessly: Any filter or slicer you apply at the page or report level will correctly filter both visuals at the same time. This is because they are both sourcing data from the same model, so the interactivity you expect from Power BI remains fully intact.
  • Consider Report Performance: This method requires Power BI to render two visual objects instead of one. On reports that are already heavy with numerous complex visuals, this could have a minor impact on load times. Use this technique where it adds the most value, especially for very wide tables that are difficult to interpret otherwise.
  • Row Heights Matter: For the alignment to look right, the row heights across both tables must be identical. If you enable "wrap text" on a column in one table, make sure the other table accounts for the same potential row height changes. Using the Format Painter is the best way to keep this consistent.

Final Thoughts

While Power BI doesn't offer a simple "freeze column" button, this two-table workaround is a reliable and highly effective way to replicate that essential feature. By carefully aligning and formatting two separate visuals, you can dramatically improve the usability and professionalism of your reports, especially when dealing with wide datasets.

Taking a few extra minutes to set up visuals like this is often what separates an okay report from a great one. At the same time, this manual setup points to the kind of friction many of us feel daily in traditional reporting tools. We created Graphed to do away with this type of time-consuming manual work. Instead of stitching visuals together, you can simply connect your data sources, ask for what you need in plain English - like "create a sales pipeline report from Salesforce showing deal velocity by sales rep" - and get a professional, real-time dashboard instantly. This lets you focus on finding the insights, not on the tedious mechanics of building reports.

Related Articles