Forum Discussion
Conditional measure
Hi,
The issue is that for the % of Cash Invested row, SELECTEDVALUE() only gives you the current matrix row (% of Cash Invested). It doesn't automatically retrieve the values from the other two matrix rows.
You can solve this by explicitly calculating the two categories inside the measure and then dividing them.
Try this:
AVG_CASH_PERCENT_BUD =
VAR CurrentCategory =
SELECTEDVALUE ( 'AVG_CASH_ACT'[CATEGORY] )
VAR TotalAverageCash =
CALCULATE (
[AVG_CASH_BUD],
REMOVEFILTERS ( 'AVG_CASH_ACT'[CATEGORY] ),
'AVG_CASH_ACT'[CATEGORY] = "Total Average Cash"
)
VAR CashInvested =
CALCULATE (
[AVG_CASH_BUD],
REMOVEFILTERS ( 'AVG_CASH_ACT'[CATEGORY] ),
'AVG_CASH_ACT'[CATEGORY] = "Cash Invested"
)
RETURN
IF (
CurrentCategory = "% of Cash Invested",
DIVIDE ( CashInvested, TotalAverageCash ),
[AVG_CASH_BUD]
)
Why this works
For normal rows, the measure simply returns:
[AVG_CASH_BUD]
But when the matrix is evaluating:
% of Cash Invested
it calculates:
Cash Invested
------------------
Total Average Cash
So, for example:
Cash Invested = 73
Total Average Cash = 100
73 / 100 = 73%
One important point
I would not use FORMAT() inside the measure:
FORMAT([AVG_CASH_BUD], "0%;(0%);-")
because FORMAT() converts the result to text, which can cause problems with totals, sorting, conditional formatting, and further calculations.
Instead, keep the measure numeric:
DIVIDE ( CashInvested, TotalAverageCash )
and format the measure as a percentage from Modeling → Format → Percentage.
If your % of Cash Invested row needs to use the YTD/month calculation from [AVG_CASH_BUD] exactly as your existing measure does, the above pattern will preserve that logic because it calls [AVG_CASH_BUD] for both categories.
Hope this helps.