Hello @lulumoon,
Is this the results that you’re trying to achieve? Below is the screenshot of the result provided for the reference -
The first table represents your answer and the second table represents my solution.
Now, I would like to list some of the problems that I’ve witnessed in your PBIX file -
Point No. 1: There’s an problem in your “Selected Year NP Formula”. As I’d said in my previous post that once you convert your figures using the “FORMAT()” function they gets converted into the “Text” format. Since your primary measure was converted into the “Text” format. The branched out measures yielded the same format i.e. “NP Senario A” and “NP Senario B” measures. And you tried to do “Subtraction” between the figures which were in “Text” format.
Point No. 2: Why one master measure and two branched out measures for scenario? You can simply create one measure for “Scenario A” and one measure for “Scenario B”. There was absolutely no need to create a master measure and then branch out in the form of two scenarios. In my case, I’ve created one measure for “Scenario A” and one for “Scenario B”. Below are both the formulas provided for the reference -
Scenario A - Harsh =
CALCULATE(
VAR CURRENTITEM = SELECTEDVALUE ('Financial_Template'[Normalized Account])
VAR SelectedYearValues =
SWITCH (TRUE (),
CURRENTITEM = "Total Revenues", DIVIDE ( [Revenues NP],1000,0),
CURRENTITEM = "Total COGS", DIVIDE ([COS_NP],1000,0),
CURRENTITEM = "Total Operating Expense", DIVIDE ( [Total Operating Expense NP],1000,0),
CURRENTITEM = "Total OIBT", DIVIDE ( [Total OIBT NP],1000,0),
CURRENTITEM = "Total Gross Profit" , DIVIDE ( [Gross Profit NP],1000,0),
CURRENTITEM = "Gross Profit %" , FORMAT( [GP Margin NP], "0.00%") ,
CURRENTITEM = "R&D Opex" , DIVIDE ( [Total R&D NP],1000,0),
CURRENTITEM = "Sales Opex" , DIVIDE ( [Total Sales NP],1000,0),
CURRENTITEM = "Marketing Opex" , DIVIDE ( [Total Marketing NP],1000,0),
CURRENTITEM = "G&A Opex" , DIVIDE ( [Total G&A NP],1000,0),
CURRENTITEM = "Restructuring/Amortization" , DIVIDE ( [Restructuring/Amortization NP],1000,0),
CURRENTITEM = "Total Operating Expense" , DIVIDE ( [Total Operating Expense NP],1000,0),
CURRENTITEM = "Non-Op", DIVIDE ( [Non-Op NP],1000,0),
CURRENTITEM = "Transaction Gain/(Loss)", DIVIDE ( [Transaction Gain/(Loss) NP],1000,0),
CURRENTITEM = "PBT", DIVIDE ( [PBT NP],1000,0),
CURRENTITEM = "Income Tax Benefit/(Expense)", DIVIDE ( [Income Tax Benefit/(Expense) NP],1000,0),
CURRENTITEM = "Net Income / (Loss)", DIVIDE ( [Net Income/(Loss) NP],1000,0),
CURRENTITEM = "Net Profit %" , FORMAT( [Net Income% NP], "0.00%") ,
BLANK () )
RETURN
SelectedYearValues ,
ALL( Dates ),
ALL( Scenario ),
TREATAS( VALUES( 'Dates-A'[Dates-A] ), Dates[Dates] ),
TREATAS( VALUES( 'Scenario-A'[Scenario-A] ), Scenario[Scenario] ) )
Scenario B - Harsh =
CALCULATE(
VAR CURRENTITEM = SELECTEDVALUE ('Financial_Template'[Normalized Account])
VAR SelectedYearValues =
SWITCH (TRUE (),
CURRENTITEM = "Total Revenues", DIVIDE ( [Revenues NP],1000,0),
CURRENTITEM = "Total COGS", DIVIDE ([COS_NP],1000,0),
CURRENTITEM = "Total Operating Expense", DIVIDE ( [Total Operating Expense NP],1000,0),
CURRENTITEM = "Total OIBT", DIVIDE ( [Total OIBT NP],1000,0),
CURRENTITEM = "Total Gross Profit" , DIVIDE ( [Gross Profit NP],1000,0),
CURRENTITEM = "Gross Profit %" , FORMAT( [GP Margin NP], "0.00%") ,
CURRENTITEM = "R&D Opex" , DIVIDE ( [Total R&D NP],1000,0),
CURRENTITEM = "Sales Opex" , DIVIDE ( [Total Sales NP],1000,0),
CURRENTITEM = "Marketing Opex" , DIVIDE ( [Total Marketing NP],1000,0),
CURRENTITEM = "G&A Opex" , DIVIDE ( [Total G&A NP],1000,0),
CURRENTITEM = "Restructuring/Amortization" , DIVIDE ( [Restructuring/Amortization NP],1000,0),
CURRENTITEM = "Total Operating Expense" , DIVIDE ( [Total Operating Expense NP],1000,0),
CURRENTITEM = "Non-Op", DIVIDE ( [Non-Op NP],1000,0),
CURRENTITEM = "Transaction Gain/(Loss)", DIVIDE ( [Transaction Gain/(Loss) NP],1000,0),
CURRENTITEM = "PBT", DIVIDE ( [PBT NP],1000,0),
CURRENTITEM = "Income Tax Benefit/(Expense)", DIVIDE ( [Income Tax Benefit/(Expense) NP],1000,0),
CURRENTITEM = "Net Income / (Loss)", DIVIDE ( [Net Income/(Loss) NP],1000,0),
CURRENTITEM = "Net Profit %" , FORMAT( [Net Income% NP], "0.00%") ,
BLANK () )
RETURN
SelectedYearValues ,
ALL( Dates ),
ALL( Scenario ),
TREATAS( VALUES( 'Dates-B'[Dates-B] ), Dates[Dates] ),
TREATAS( VALUES( 'Scenario-B'[Scenario-B] ), Scenario[Scenario] ) )
Point No. 3: Now, since “Scenario A” and “Scenario B” measures contains the “FORMAT()” function I cannot subtract both the measures i.e. Measure Branching technique is not possible in this case. So wrote another measure to calculate the Difference figures. And I excluded the “Gross Profit %” and “Net Profit %” since they’re not the figures in term of Amount (They’re in terms of Percentages [%] ). Below is the measure provided for the reference to calculate the Difference figures -
Scenario Difference - Harsh =
VAR ScenarioA =
CALCULATE(
VAR CURRENTITEM = SELECTEDVALUE ('Financial_Template'[Normalized Account])
VAR SelectedYearValues =
SWITCH (TRUE (),
CURRENTITEM = "Total Revenues", DIVIDE ( [Revenues NP],1000,0),
CURRENTITEM = "Total COGS", DIVIDE ([COS_NP],1000,0),
CURRENTITEM = "Total Operating Expense", DIVIDE ( [Total Operating Expense NP],1000,0),
CURRENTITEM = "Total OIBT", DIVIDE ( [Total OIBT NP],1000,0),
CURRENTITEM = "Total Gross Profit" , DIVIDE ( [Gross Profit NP],1000,0),
CURRENTITEM = "R&D Opex" , DIVIDE ( [Total R&D NP],1000,0),
CURRENTITEM = "Sales Opex" , DIVIDE ( [Total Sales NP],1000,0),
CURRENTITEM = "Marketing Opex" , DIVIDE ( [Total Marketing NP],1000,0),
CURRENTITEM = "G&A Opex" , DIVIDE ( [Total G&A NP],1000,0),
CURRENTITEM = "Restructuring/Amortization" , DIVIDE ( [Restructuring/Amortization NP],1000,0),
CURRENTITEM = "Total Operating Expense" , DIVIDE ( [Total Operating Expense NP],1000,0),
CURRENTITEM = "Non-Op", DIVIDE ( [Non-Op NP],1000,0),
CURRENTITEM = "Transaction Gain/(Loss)", DIVIDE ( [Transaction Gain/(Loss) NP],1000,0),
CURRENTITEM = "PBT", DIVIDE ( [PBT NP],1000,0),
CURRENTITEM = "Income Tax Benefit/(Expense)", DIVIDE ( [Income Tax Benefit/(Expense) NP],1000,0),
CURRENTITEM = "Net Income / (Loss)", DIVIDE ( [Net Income/(Loss) NP],1000,0),
BLANK () )
RETURN
SelectedYearValues ,
ALL( Dates ),
ALL( Scenario ),
TREATAS( VALUES( 'Dates-A'[Dates-A] ), Dates[Dates] ),
TREATAS( VALUES( 'Scenario-A'[Scenario-A] ), Scenario[Scenario] ) )
VAR ScenarioB =
CALCULATE(
VAR CURRENTITEM = SELECTEDVALUE ('Financial_Template'[Normalized Account])
VAR SelectedYearValues =
SWITCH (TRUE (),
CURRENTITEM = "Total Revenues", DIVIDE ( [Revenues NP],1000,0),
CURRENTITEM = "Total COGS", DIVIDE ([COS_NP],1000,0),
CURRENTITEM = "Total Operating Expense", DIVIDE ( [Total Operating Expense NP],1000,0),
CURRENTITEM = "Total OIBT", DIVIDE ( [Total OIBT NP],1000,0),
CURRENTITEM = "Total Gross Profit" , DIVIDE ( [Gross Profit NP],1000,0),
CURRENTITEM = "R&D Opex" , DIVIDE ( [Total R&D NP],1000,0),
CURRENTITEM = "Sales Opex" , DIVIDE ( [Total Sales NP],1000,0),
CURRENTITEM = "Marketing Opex" , DIVIDE ( [Total Marketing NP],1000,0),
CURRENTITEM = "G&A Opex" , DIVIDE ( [Total G&A NP],1000,0),
CURRENTITEM = "Restructuring/Amortization" , DIVIDE ( [Restructuring/Amortization NP],1000,0),
CURRENTITEM = "Total Operating Expense" , DIVIDE ( [Total Operating Expense NP],1000,0),
CURRENTITEM = "Non-Op", DIVIDE ( [Non-Op NP],1000,0),
CURRENTITEM = "Transaction Gain/(Loss)", DIVIDE ( [Transaction Gain/(Loss) NP],1000,0),
CURRENTITEM = "PBT", DIVIDE ( [PBT NP],1000,0),
CURRENTITEM = "Income Tax Benefit/(Expense)", DIVIDE ( [Income Tax Benefit/(Expense) NP],1000,0),
CURRENTITEM = "Net Income / (Loss)", DIVIDE ( [Net Income/(Loss) NP],1000,0),
BLANK () )
RETURN
SelectedYearValues ,
ALL( Dates ),
ALL( Scenario ),
TREATAS( VALUES( 'Dates-B'[Dates-B] ), Dates[Dates] ),
TREATAS( VALUES( 'Scenario-B'[Scenario-B] ), Scenario[Scenario] ) )
RETURN
ScenarioA - ScenarioB
Point No. 4: Now, to calcuate the Percentage (%) figures. I wrote almost the same measure as mentioned in the Point No. 3. But now I’ve included the “Gross Profit %” and “Net Profit %” measures into the formula.
The most important point to be noted over here is that -
I’ve not used the “FORMAT()” function at all.
- For “Gross Profit %”, I’ve used the [GP Margin NP] measure and
- For “Net Profit %” I’ve used the [Net Income% NP].
As simple as that. Because I don’t want them to be converted into the “Text” format. Below is the last and final formula provided for the reference -
Scenario Change - Harsh =
VAR ScenarioA =
CALCULATE(
VAR CURRENTITEM = SELECTEDVALUE ('Financial_Template'[Normalized Account])
VAR SelectedYearValues =
SWITCH (TRUE (),
CURRENTITEM = "Total Revenues", DIVIDE ( [Revenues NP],1000,0),
CURRENTITEM = "Total COGS", DIVIDE ([COS_NP],1000,0),
CURRENTITEM = "Total Operating Expense", DIVIDE ( [Total Operating Expense NP],1000,0),
CURRENTITEM = "Total OIBT", DIVIDE ( [Total OIBT NP],1000,0),
CURRENTITEM = "Total Gross Profit" , DIVIDE ( [Gross Profit NP],1000,0),
CURRENTITEM = "Gross Profit %" , [GP Margin NP] ,
CURRENTITEM = "R&D Opex" , DIVIDE ( [Total R&D NP],1000,0),
CURRENTITEM = "Sales Opex" , DIVIDE ( [Total Sales NP],1000,0),
CURRENTITEM = "Marketing Opex" , DIVIDE ( [Total Marketing NP],1000,0),
CURRENTITEM = "G&A Opex" , DIVIDE ( [Total G&A NP],1000,0),
CURRENTITEM = "Restructuring/Amortization" , DIVIDE ( [Restructuring/Amortization NP],1000,0),
CURRENTITEM = "Total Operating Expense" , DIVIDE ( [Total Operating Expense NP],1000,0),
CURRENTITEM = "Non-Op", DIVIDE ( [Non-Op NP],1000,0),
CURRENTITEM = "Transaction Gain/(Loss)", DIVIDE ( [Transaction Gain/(Loss) NP],1000,0),
CURRENTITEM = "PBT", DIVIDE ( [PBT NP],1000,0),
CURRENTITEM = "Income Tax Benefit/(Expense)", DIVIDE ( [Income Tax Benefit/(Expense) NP],1000,0),
CURRENTITEM = "Net Income / (Loss)", DIVIDE ( [Net Income/(Loss) NP],1000,0),
CURRENTITEM = "Net Profit %" , [Net Income% NP] ,
BLANK () )
RETURN
SelectedYearValues ,
ALL( Dates ),
ALL( Scenario ),
TREATAS( VALUES( 'Dates-A'[Dates-A] ), Dates[Dates] ),
TREATAS( VALUES( 'Scenario-A'[Scenario-A] ), Scenario[Scenario] ) )
VAR ScenarioB =
CALCULATE(
VAR CURRENTITEM = SELECTEDVALUE ('Financial_Template'[Normalized Account])
VAR SelectedYearValues =
SWITCH (TRUE (),
CURRENTITEM = "Total Revenues", DIVIDE ( [Revenues NP],1000,0),
CURRENTITEM = "Total COGS", DIVIDE ([COS_NP],1000,0),
CURRENTITEM = "Total Operating Expense", DIVIDE ( [Total Operating Expense NP],1000,0),
CURRENTITEM = "Total OIBT", DIVIDE ( [Total OIBT NP],1000,0),
CURRENTITEM = "Total Gross Profit" , DIVIDE ( [Gross Profit NP],1000,0),
CURRENTITEM = "Gross Profit %" , [GP Margin NP] ,
CURRENTITEM = "R&D Opex" , DIVIDE ( [Total R&D NP],1000,0),
CURRENTITEM = "Sales Opex" , DIVIDE ( [Total Sales NP],1000,0),
CURRENTITEM = "Marketing Opex" , DIVIDE ( [Total Marketing NP],1000,0),
CURRENTITEM = "G&A Opex" , DIVIDE ( [Total G&A NP],1000,0),
CURRENTITEM = "Restructuring/Amortization" , DIVIDE ( [Restructuring/Amortization NP],1000,0),
CURRENTITEM = "Total Operating Expense" , DIVIDE ( [Total Operating Expense NP],1000,0),
CURRENTITEM = "Non-Op", DIVIDE ( [Non-Op NP],1000,0),
CURRENTITEM = "Transaction Gain/(Loss)", DIVIDE ( [Transaction Gain/(Loss) NP],1000,0),
CURRENTITEM = "PBT", DIVIDE ( [PBT NP],1000,0),
CURRENTITEM = "Income Tax Benefit/(Expense)", DIVIDE ( [Income Tax Benefit/(Expense) NP],1000,0),
CURRENTITEM = "Net Income / (Loss)", DIVIDE ( [Net Income/(Loss) NP],1000,0),
CURRENTITEM = "Net Profit %" , [Net Income% NP] ,
BLANK () )
RETURN
SelectedYearValues ,
ALL( Dates ),
ALL( Scenario ),
TREATAS( VALUES( 'Dates-B'[Dates-B] ), Dates[Dates] ),
TREATAS( VALUES( 'Scenario-B'[Scenario-B] ), Scenario[Scenario] ) )
RETURN
DIVIDE( ScenarioA - ScenarioB , [Net Income% NP] , 0 )
I guess after a lengthiest explanation you might want to consider having a great and in-depth look at a file. So I’m also attaching the working of the PBIX file for the reference.
Hoping you find this useful and meets your requirements that you’ve been looking for.
Thanks and Warm Regards,
Harsh
Financial Reporting Test - Harsh.pbix (977.1 KB)