Don't miss your chance to take the Fabric Data Engineer (DP-600) exam for FREE! Find out how by watching the DP-600 session on-demand now through April 28th.
Learn moreJoin the FabCon + SQLCon recap series. Up next: Power BI, Real-Time Intelligence, IQ and AI, and Data Factory take center stage. All sessions are available on-demand after the live show. Register now
Hi all,
I'm currently doing a project and need some assistance. I'm still finding my way around DAX and I'm trying to get my MoM % change to turn red if the change is negative and green when it's positive. This is the DAX code, I've been using:
Please can someone assist me.
Thank you.
Solved! Go to Solution.
Hi @Anonymous00729,
This Approach should work with you give it a try :
Revenue MoM % with Arrow =
VAR upArrow = UNICHAR(9650) // ▲
VAR downArrow = UNICHAR(9660) // ▼
VAR change = [MoM % ▲]
VAR formattedText =
IF(
change > 0,
FORMAT(change, "0.00%") & " " & upArrow,
FORMAT(change, "0.00%") & " " & downArrow
)
RETURN
formattedTextTo apply conditional formatting in Power BI:
Go to Format → Data label → Conditional Formatting (fx)
Choose Field value → select your measure
Alternative DAX only approach (if you want everything in one measure):
Revenue MoM % with Arrow =
VAR upArrow = UNICHAR(9650)
VAR downArrow = UNICHAR(9660)
VAR change = [MoM % ▲]
VAR textColor =
IF(
change > 0,
"<span style='color:green'>",
"<span style='color:red'>"
)
VAR formattedText =
IF(
change > 0,
FORMAT(change, "0.00%") & " " & upArrow,
FORMAT(change, "0.00%") & " " & downArrow
)
RETURN
textColor & formattedText & "</span>"
The logic behind color formatting should be done with a measure based on a numerical value. Format() returns a text value.
My advice would be to seperate the calculation and the color designation.
I recreated your problem and with the following code you get your solution:
Revenue MoM % :=
VAR Curr = [Total Revenue] -- huidige maand
VAR Prev = [Previous Month Revenue] -- vorige maand
RETURN
DIVIDE( Curr - Prev, Prev )
Revenue MoM % with Arrow :=
VAR upArrow = UNICHAR(9650) -- ▲
VAR downArrow = UNICHAR(9660) -- ▼
VAR change = [Revenue MoM %]
RETURN
FORMAT( change, "0.00%" ) & " " &
IF( change > 0, upArrow, downArrow )
The above on is the value you use in the card visual
Measure for color formatting:
Revenue MoM Color :=
VAR change = [Revenue MoM %]
RETURN
SWITCH(
TRUE(),
ISBLANK(change), "#808080", -- gray when no value
change > 0, "#008000", -- green
change < 0, "#C00000", -- red
"#000000" -- black as fallback
)
And then you need to put the color measure in the formatting pane.
Format panel → Data label → Color → fx → Format by: Field value → Select Revenue MoM Color.
Hope this helps.
The logic behind color formatting should be done with a measure based on a numerical value. Format() returns a text value.
My advice would be to seperate the calculation and the color designation.
I recreated your problem and with the following code you get your solution:
Revenue MoM % :=
VAR Curr = [Total Revenue] -- huidige maand
VAR Prev = [Previous Month Revenue] -- vorige maand
RETURN
DIVIDE( Curr - Prev, Prev )
Revenue MoM % with Arrow :=
VAR upArrow = UNICHAR(9650) -- ▲
VAR downArrow = UNICHAR(9660) -- ▼
VAR change = [Revenue MoM %]
RETURN
FORMAT( change, "0.00%" ) & " " &
IF( change > 0, upArrow, downArrow )
The above on is the value you use in the card visual
Measure for color formatting:
Revenue MoM Color :=
VAR change = [Revenue MoM %]
RETURN
SWITCH(
TRUE(),
ISBLANK(change), "#808080", -- gray when no value
change > 0, "#008000", -- green
change < 0, "#C00000", -- red
"#000000" -- black as fallback
)
And then you need to put the color measure in the formatting pane.
Format panel → Data label → Color → fx → Format by: Field value → Select Revenue MoM Color.
Hope this helps.
Thank you so much for your help. This worked perfectly!
Hi @Anonymous00729,
This Approach should work with you give it a try :
Revenue MoM % with Arrow =
VAR upArrow = UNICHAR(9650) // ▲
VAR downArrow = UNICHAR(9660) // ▼
VAR change = [MoM % ▲]
VAR formattedText =
IF(
change > 0,
FORMAT(change, "0.00%") & " " & upArrow,
FORMAT(change, "0.00%") & " " & downArrow
)
RETURN
formattedTextTo apply conditional formatting in Power BI:
Go to Format → Data label → Conditional Formatting (fx)
Choose Field value → select your measure
Alternative DAX only approach (if you want everything in one measure):
Revenue MoM % with Arrow =
VAR upArrow = UNICHAR(9650)
VAR downArrow = UNICHAR(9660)
VAR change = [MoM % ▲]
VAR textColor =
IF(
change > 0,
"<span style='color:green'>",
"<span style='color:red'>"
)
VAR formattedText =
IF(
change > 0,
FORMAT(change, "0.00%") & " " & upArrow,
FORMAT(change, "0.00%") & " " & downArrow
)
RETURN
textColor & formattedText & "</span>"
Thank you so much for your help, this worked!
And thank you for the HTML bit as well, I will keep this for future reference.
Check out the April 2026 Power BI update to learn about new features.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.
| User | Count |
|---|---|
| 7 | |
| 6 | |
| 4 | |
| 1 | |
| 1 |
| User | Count |
|---|---|
| 16 | |
| 8 | |
| 7 | |
| 6 | |
| 6 |