Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
101Mathew
Resolver II
Resolver II

Matrix - formatting and Sorting

There appears to be no method to format column vertical lines; i would love to be able to format the top level of a column hierarchy - to have a alternating colour background on the that level of text, also to have thicker vertical lines

it also seems mad that we don't appear to have a method to sort the column order

1 ACCEPTED SOLUTION
v-tejrama
Community Support
Community Support

Hi @101Mathew ,
This behavior is a current limitation of the Matrix visual. Power BI doesn’t support applying different formatting at individual column hierarchy levels such as alternating header colors or thicker vertical gridline, and column groups can’t be manually reordered. The order of hierarchy fields is always driven by the model’s sort logic , alphabetical or Sort by Column. While measures can be reordered by drag and drop in the Values well, this capability does not apply to column hierarchy fields.

As a workaround, you can use a dedicated sort column in the model, or replace the column hierarchy with individual measures so you can control their order explicitly. Features like Field Parameters or dynamic format strings can help with dynamic selection or value formatting, but they don’t solve the core limitations around hierarchy level formatting or custom column ordering in a Matrix at this time.

 

View solution in original post

8 REPLIES 8
v-tejrama
Community Support
Community Support

Hi @101Mathew ,
This behavior is a current limitation of the Matrix visual. Power BI doesn’t support applying different formatting at individual column hierarchy levels such as alternating header colors or thicker vertical gridline, and column groups can’t be manually reordered. The order of hierarchy fields is always driven by the model’s sort logic , alphabetical or Sort by Column. While measures can be reordered by drag and drop in the Values well, this capability does not apply to column hierarchy fields.

As a workaround, you can use a dedicated sort column in the model, or replace the column hierarchy with individual measures so you can control their order explicitly. Features like Field Parameters or dynamic format strings can help with dynamic selection or value formatting, but they don’t solve the core limitations around hierarchy level formatting or custom column ordering in a Matrix at this time.

 

Thank you, this was my findings also, I was wondering if there was some type of solution - I've raised an suggestion in the Idea's section yesterday for this -

My issue is compounded by the need to switch the measures into rows

danextian
Super User
Super User

I forgot to mention that coumn headers are sorted either alphabetically in chronological order (no optino to reverse it) or based on the defined custom sort for that column. 





Dane Belarmino | Microsoft MVP | Proud to be a Super User!

Did I answer your question? Mark my post as a solution!


"Tell me and I’ll forget; show me and I may remember; involve me and I’ll understand."
Need Power BI consultation, get in touch with me on LinkedIn or hire me on UpWork.
Learn with me on YouTube @DAXJutsu or follow my page on Facebook @DAXJutsuPBI.
Amar_Kumar
Continued Contributor
Continued Contributor

@101Mathew Your observation is correct. These are current Power BI limitations.

Formatting column hierarchy headers:

  • You cannot format different levels of a column hierarchy separately

  • No option to apply alternating background colors to top-level column headers

  • Vertical grid lines cannot be made thicker per column or hierarchy level

  • Only global grid on/off and color settings are available

  • Header formatting applies to all column levels equally

Column order sorting:

  • There is no direct UI option to manually reorder columns in a matrix

  • Column order follows:

    • Natural sort of the column field

    • Or “Sort by column” from the data model

  • You cannot drag and drop column order like rows

Workarounds:

  • Create a custom sort column and use “Sort by column”

  • Prefix column names with numbers (01, 02, 03)

GrowthNatives
Solution Specialist
Solution Specialist

Hi @101Mathew , You are correct Power BI does not support custom column ordering in a Matrix the way it supports row ordering
But you can follow these steps that might work in favour :

1. Fake column hierarchy using measures

Instead of a column hierarchy, you:

Create separate measures for each logical column

Place them side-by-side in Values

Control order manually
Example : 

Sales_2024 = CALCULATE([Sales], 'Date'[Year] = 2024)
Sales_2025 = CALCULATE([Sales], 'Date'[Year] = 2025)

 

2. Add a “sort index” column (only works for rows)
If your complaint is partly about column categories, the only sortable alternative is to pivot them into rows.

Steps:

Unpivot data so categories become rows

Add numeric SortOrder column

Sort category by SortOrder

Use Matrix rows instead of columns

3. Simulated top-level header styling

You can fake top-level formatting by:

Adding the top hierarchy field as:

A row

With stepped layout OFF

Turning off subtotals

Using conditional formatting on row background:

DAX 
IsTopLevel = IF( ISINSCOPE('Table'[Child]), 0, 1 )

Then apply:

Background color when IsTopLevel = 1

Transparent otherwise

4. Vertical separators using blank columns
To simulate thicker vertical lines:
Add a dummy measure:

DAX 
Spacer = ""

Place it between columns

Set background color darker

Reduce column width

 

Hope this solution helps you make the most of Power BI! If it did, click 'Mark as Solution' to help others find the right answers.
💡Found it helpful? Show some love with kudos 👍 as your support keeps our community thriving!
🚀Let’s keep building smarter, data-driven solutions together!🚀 [Explore More]






 

Thank you sorry I should have stated that I need to have measure switched to rows

@101Mathew , Power BI does support moving measures from columns to rows, but it is controlled by a Matrix-only setting.

Step-by-step

Select your Matrix visual

Open Format pane

Go to Values

Toggle Show on rows = On

Result:

Measures appear as row headers

Columns now represent only column fields

Measures behave like categorical row members

Measure ordering (finally controllable)

Measures appear in the order they are listed in the Values well

You can:

Drag measures up/down to reorder

Remove/reinsert measures in a fixed order

You can now apply row-level background formatting, which affects each measure row independently.

- Workaround — fake measure group headers
Create a text measure to act as a group header.

DAX 
Revenue Header = "REVENUE"

Place it above revenue-related measures in the Values well.

Then format:

Bold font

Dark background

Disable totals for that row

To hide values:

Conditional formatting → Font color = background color

Or return BLANK() for numeric visuals

danextian
Super User
Super User

Hi @101Mathew 

There is no currently option to change the format of each column hierarchy.  Formatting is applied to the whole of the column header.





Dane Belarmino | Microsoft MVP | Proud to be a Super User!

Did I answer your question? Mark my post as a solution!


"Tell me and I’ll forget; show me and I may remember; involve me and I’ll understand."
Need Power BI consultation, get in touch with me on LinkedIn or hire me on UpWork.
Learn with me on YouTube @DAXJutsu or follow my page on Facebook @DAXJutsuPBI.

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.