Skip to content

Rolling Forecast reporting in Excel

In monthly reporting for the current year the most pertinent numbers for closed periods are the actuals, and for open or future months the forecast. In most cubes actual and forecast (or budget) are implemented as either different measures, or as part of a scenario hierarchy. This can lead to challenges in reporting, where putting both the period and the actual/forecast on the same axis means you will get duplicated months which show the forecast for periods when the actuals are already in as in the PivotTable below.

 

 RP10

We would want the report to be asymmetric (i.e. different months returned for Actual and Budget). Various tools can handle that, and it’s always been possible to achieve that in XLCubed through formulae or in a grid. What’s more difficult is to make the report fully dynamic without the need to redesign it each time. Ideally we’d want the user to be able to change a slicer to select the last completed month (or pick this up directly from the cube), and have the appropriate months reported under Actual and Budget.  Here’s how to achieve it in one grid…..

The approach uses a combination of:

  • Excel Ranges to determine the available months, and which are for Actual and Budget
  • An XLCubed Slicer to pick the ‘Last Actuals’
  • One XLCubed grid with the ‘Exclude from display’ pointing to the relevant ranges above

Let’s work through this example which uses the Finance cube on the AdventureWorks DW 2008R2 database.

We’re going to use data from FY 2006 and report Actual and Budget figures across departments.  We will use a slicer to select the last Actual month we want reported.  For the remaining FY 2006 months we will report Budget values.

Entire year of Months in the report

There are several ways to achieve this – we added an XLCubed Excel driven slicer (XLCubed – Slicer – Excel) based on the range $AA$1:$AB$12 as shown below, containing all months in FY 2006. This lets the user pick the last month for which we want to report Actuals.

 

RP1

RP3

 

 

 

 

 

 

 

 

 

The slicer is set to output its selection into $B$1.  In $C$1 the formula =VALUE(B1) converts the text output of the slicer into a number which we’ll use to calculate which months should report Actual and which Budget, see the screenshot below:

RP2

 

 

 

 

Date Table

This is an Excel range supporting the reporting logic. Row 2 contains every month in the reporting year. Row 3 assigns an incremental number to each month, 1-12.

We can then compare the value of the selected month from the slicer ($C$1) with the value for each month. Basically if the month is less than or equal to the selected last actuals month it should be reported as Actuals, otherwise as Budget.  An example formula contained in B4 for Actuals would be: =IF(B3<=$C$1,B2,”") . For the Budget row the formula has the inverse logic.

At this stage we’ve used a little XLCubed, and the flexibility of Excel to match the appropriate months to Actual and Budget. We now need to add the report itself.

We’ll create our grid – initially we set it up to report Budget and Actual figures across the year, by basing the selection for Date.Fiscal on the range containing all months for the year ( $B$2:$M$2).

We then use XLCubed’s right-click menu (Keep – Exclude From Display) to exclude members.  It doesn’t matter which slices are excluded at this point. To do this highlight ‘Actual’, followed by the first available month and then choose Exclude From Display. Repeat this for ‘Budget’ and the first available month.  We will exclude July 2005 for Actuals and August 2005 for Budget.  You will notice the red comment marker on the grid. Right-click on this cell and choose Axis – Edit, and go to the Excluded Slices tab.

RP6 RP7

 

 

 

 

 

 

 

 

The above screenshots show that we are currently excluding July 2005 from Actual as well as August 2005 from Budget.

We can then easily change the Date Fiscal selection for each scenario.  For Budget we will exclude Budget values for months in cell locations $B$4:$M$4 (as we want to report Actuals for those entries) and Actuals values for the months in cell locations $B$5:$M$5 (as we want to report Budgets for those entries).

RP8

The grid report now looks like this with Actuals being reported up to November 2005 and Budgeted for the remainder of FY 2006:

RP5

We have also set Merge Repeating Cells on (in Grid Properties).  You could do further formatting – for example by colour filling all Budget values and hiding the grid headers.

RP9

The end result is a one grid report giving the Actual:Budget month mix that we want with the monthly maintenance process a case of simply changing a combo box selection.

 

 

Categories: Excel Tricks, General, Reporting, Uncategorized.

Tags: , , ,

Comment Feed

6 Responses

  1. This is a nice workaround. It would be a lot nicer to make the “Exclude from Display” dialog programmable as all (!) other dialogs are that deal with member selections. I mean, allow sets {}, manual mdx… for excluding members, too. This should be possible, here I am assuming that November 2005 is coming from a slicer, the rest is just mdx, not very beautiful but demonstrating my point:

    Select { } On Columns,

    Except (
    ( {[Scenario].&[Actual],[Scenario].&[Budget]}
    * {Descendants([Time].[Year].&[2005-01-01T00:00:00],[Time].[Month],SELF)})

    ,{([Scenario].&[Budget],[Time].[Year].&[2005-01-01T00:00:00].FirstChild.FirstChild:[Time].[Month].&[2005-11-01T00:00:00])
    ,([Scenario].&[Actual],[Time].[Month].&[2005-12-01T00:00:00]:[Time].[Year].&[2005-01-01T00:00:00].LastChild.LastChild)}
    ) On Rows
    From [Sales] Cell Properties VALUE

    Result:
    Actual January 2005
    Actual February 2005
    Actual March 2005
    Actual April 2005
    Actual May 2005
    Actual June 2005
    Actual July 2005
    Actual August 2005
    Actual September 2005
    Actual October 2005
    Actual November 2005
    Budget December 2005

    There is not much Excel required here, simply write the result eg. into A1 and use one textformula to create the “manual mdx” eg in B1 to exclude all Budgets from January to November:
    = “([Scenario].&[Budget],[Time].[Year].&[2005-01-01T00:00:00].FirstChild.FirstChild:”&A1&”)”

    I have trouble with the exclude dialog that could be simply solved by accepting eg. “SomeMember.Children”.

    regards
    arno

  2. at the end of my post I mean with “result” the selected month of the slicer (unique name)

    • Hi Arno,

      Not sure what version you are running but in 7.2, once you are driving the exclusion from a range, you can use MDXSET: to give the MDX to use, for example:

      MDXSET: {[Product].[Product Categories].[All Products].Children}

      Hope that helps, if you have trouble getting it working please let us know.

      Thanks

      xlcubedblogApril 16, 2013 @ 8:38 pmReply
  3. Perfect! See this site for details: http://www.xlcubed.com/help/mdx%3A

    Is there a list of functions like MDX/MDXSET? I could find it only because I knew what I was looking for, is there some documentation?

    thank you
    arno

  4. I am looking for write back instructions for uploading large data into xlcube? plz assist?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>