Excel Reporting14 min read

Building a Monthly MIS Report in Excel A Structure That Survives Month Two

Most MIS packs are built once, work beautifully, and become unmaintainable by the third month. The difference between a pack that survives and one that does not is decided by its structure, not by the formulas in it.

Short answer

Structure a monthly MIS pack in three layers: a data sheet holding the ledger extract with one row per entry, a calculation layer that summarises it by period, and a presentation sheet that formats the output for reading. Drive every figure from a chart-of-accounts mapping table rather than from typed account codes, and report variance as favourable or unfavourable rather than as a raw subtraction. Each month you replace the data layer and refresh — nothing on the presentation sheet is retyped.

What the pack is for

An MIS pack is not an accounting report. A trial balance tells you the books balance; an MIS pack tells somebody which decision to make. That distinction decides what goes in it.

SectionThe question it answersUsually built from
Revenue and margin by segmentWhere are we making money and where are we not?Sales register by product or state, with the direct cost of each
Profit and loss summary — month and YTDHow did the period go?Trial balance or ledger extract, mapped to MIS lines
Variance against budgetIs the difference from plan explained?The same summary, with the budget in parallel columns
Variance against prior yearIs this a trend or a one-off?The same summary for the same period last year
Receivables ageingHow much is overdue, and from whom?Open sales invoices with due dates
Payables and cash positionWhat is going out, and can we cover it?Vendor balances and bank balances
Working capital and key ratiosIs the business getting better or worse at this?The figures above, combined

Cut anything nobody acts on

A pack with fourteen sections gets skimmed; a pack with six gets read. If a section has not driven a question or a decision in six months, it is costing the reader attention that the sections that matter need. Removing a section is a legitimate improvement to a report.

The three-layer rule

This is the whole of the structure advice, and everything else in the article follows from it.

LayerContainsChanged when
1 — DataOne sheet, one row per ledger entry or transaction. No subtotals, no formatting, no blank rows, no merged cellsEvery month, by replacing the extract
2 — CalculationSummaries by account and period, the mapping lookup, the variance figuresAlmost never — this is where the logic lives
3 — PresentationThe layout the reader sees: headings, number formats, the order of the lines, the notesRarely, and never to change a number

The failure mode this prevents is the one that kills most packs. Without separated layers, next month involves editing formulas inside the report layout — a SUMIFS range extended here, an account code changed there — and each edit is an opportunity to break something that nobody will notice until the figures are questioned.

The test for whether you have done this correctly

Next month's work should consist of replacing the data sheet and pressing Refresh. If the month involves typing a figure, changing an account code or adjusting a range, the layers are not separated and the pack will get harder to produce every month rather than easier.

Step 1: fix the period and the comparison

DecisionOptionsNote
Reporting periodCalendar month, or a 4-4-5 periodWhatever the business is managed on — but it must be the same every month
ComparisonsBudget, prior year, prior month, forecastTwo comparisons is usually the limit before a table becomes unreadable
Year-to-date basisFrom 1 April, from 1 JanuaryFor most Indian businesses this is the financial year from April
Currency and unitsRupees, thousands, lakhsState it once in the header of the pack, not on each row

Write those four decisions into the header of the pack itself. Half of the arguments about a monthly report are really arguments about what it is comparing, and having it in writing ends them.

Step 2: the data layer

1

Get the extract in the right shape

One row per ledger entry: period, date, account code, account name, cost centre, debit, credit, narration. No trailing total row, no blank rows, no merged cells.
2

Store it as a Table

Ctrl+T. This gives you a name to reference and a range that grows when the next extract is pasted beneath it, which is what keeps the calculation layer correct.
3

Add the period column explicitly

Do not derive the period from the date every time. A period column — Apr-25, May-25 — is what every summary groups on, and it is the column that makes a restatement resolvable later.
4

Load it with Power Query if it arrives the same way each month

If the extract is exported to the same folder with the same column layout, a query replaces the whole step. Combining the twelve monthly files into one historical table is covered in combining multiple Excel files.
5

Keep the budget in the same shape

The budget should be a table with period, MIS line and amount — the same grain as the actuals. A budget stored as a formatted report rather than as data cannot be joined to anything.

Step 3: the mapping table

This is the piece most packs are missing, and it is the one that makes the difference between a report you maintain and a report you rebuild.

Account codeAccount nameMIS lineLine type
4001Domestic sales — goodsRevenue — DomesticIncome
4002Export sales — goodsRevenue — ExportIncome
4005Sales returnsRevenue — DomesticIncome
5101Opening stockCost of goods soldExpense
5104Purchases — traded goodsCost of goods soldExpense
5110Freight inwardCost of goods soldExpense
5201Salaries and wagesEmployee benefit expenseExpense
5901Interest on term loanFinance costExpense
5905DepreciationDepreciation and amortisationExpense

Two things are happening here. The MIS line column lets several ledger accounts roll into one reporting line — which is how a pack groups, say, three separate travel accounts into "Travel and conveyance". The Line type column is what lets the variance formula know whether spending more than the budget is good news.

A new ledger account is a new row, not a formula edit

Without a mapping table, adding an account means finding every formula that lists account codes and adding the new one — and missing one, which produces a total that is short by that account with nothing to indicate it. With a mapping table it is one row, and the summary picks it up. This is the single highest-value change you can make to a monthly pack.

Step 4: the calculation layer

CalculationApproach
Actual by MIS line and periodSUMIFS over the data table, with the account codes coming from the mapping table
Budget by MIS line and periodSUMIFS over the budget table, matched on line and period
Year to dateThe same SUMIFS with the period criterion replaced by a set of periods up to the current one
Prior yearThe same again, with the prior year's periods — which is why the period column must be in the data
VarianceA sign-corrected subtraction, using the Line type column
Variance percentageThe variance divided by the budget, with the result handled when the budget is nil

Using SUMIFS with a cell reference as the criterion — the MIS line name in the presentation sheet — rather than hard-coding the account codes is what lets the pack be copied forward month after month without editing.

Step 5: variance that reads correctly

Here is the detail that separates a pack people understand from one they have to translate. Spending ₹40,000 more than budget is unfavourable on a cost line and favourable on a revenue line. A single Actual minus Budget column cannot express both, so the reader ends up doing the sign arithmetic in their head, row by row — and eventually getting one wrong in a meeting.

MIS lineTypeBudget (₹)Actual (₹)Variance (₹)Fav / (Unfav)
Revenue — DomesticIncome42,00,00044,80,0002,80,000Favourable
Revenue — ExportIncome8,50,0007,10,000(1,40,000)Unfavourable
Cost of goods soldExpense29,40,00031,20,0001,80,000Unfavourable
Employee benefit expenseExpense6,20,0006,05,000(15,000)Favourable
Finance costExpense1,10,0001,34,00024,000Unfavourable
DepreciationExpense82,00082,0000—

The formula is a single IF on the line type: for an income line the favourable direction is actual above budget, and for an expense line it is the reverse. Once that is in the calculation layer, the reader never has to think about the sign again.

Do not hide an unfavourable variance behind a formatted minus

Red brackets are not an explanation, and they are easy to miss when a table is being read at speed. Where a variance is large, the pack should carry the reason in words on the same row or in a short note underneath. A variance with no explanation is the thing management asks about first, and it means the reader leaves the report without the answer the report was supposed to give them.

Step 6: the presentation layer

RuleWhy
One sheet, the figures linked from the calculation layerNobody has to hunt for which sheet holds the real number
Column headers carry the period, not just “Actual”A pack emailed around gets separated from its context
Fixed number formats, set once₹ in lakhs on one row and units on the next is a reading error waiting to happen
No merged cells in the data areaThey break sorting, and they break the moment somebody wants to pivot the pack
Cost centres and segments as columns, not as separate blocksBlocks have to be rebuilt when a segment is added; columns do not
Print setup done once — fit to width, headers repeatedThe pack will be printed, and it should not be re-set-up each month

The monthly routine

1

Lock the period

Nothing changes after the cut-off without being recorded. This is the same discipline a month-end close needs.
2

Replace the data sheet

Paste the new extract beneath the existing table or point the query at the new file. Check the row count against the source before accepting it.
3

Refresh everything

Data → Refresh All. Refresh All rather than a right-click refresh, because a workbook with more than one pivot table has more than one cache.
4

Reconcile the pack to the trial balance

The total revenue and total expense in the pack should agree to the ledger. If they do not, the mapping table is missing an account — which is the failure that a mapping table makes visible and manual formulas hide.
5

Read the variance before you send it

Anything outside the threshold the business uses needs a sentence of explanation. If you cannot explain it, you have found the work for today rather than a problem with the report.
6

Save a copy with values only

The distributed version has no links to the source. The working file stays behind, and the two are never confused.

That sequence is the reporting stage of the month-end routine — the full sequence, including the reconciliations that have to finish before the pack can be built, is in the month-end Excel routine.

Common mistakes

  • Building the report first and the data later. The layout feels like the deliverable, so it gets built first, and every month after that is spent feeding it by hand.
  • Typing account codes into formulas. The pack becomes wrong the first time the chart of accounts changes, silently.
  • Storing actuals as a report rather than as data. A formatted twelve-column summary cannot be joined to next month's extract or to a budget.
  • Using the previous pack as this month's template. Old figures get typed over, and one gets missed. Replace the data; do not overwrite the output.
  • No reconciliation between the pack and the ledger. The gap is found by the auditor rather than by the person who produced it.
  • A variance column that does not distinguish favourable from unfavourable. Readers misread it, and the report gets a reputation for being hard to interpret.
  • Sending the live workbook. The recipient refreshes it, breaks a link, and can no longer reproduce the figures they read last month.

Where the pack stops being a spreadsheet problem

Once the three layers are separated and the mapping table is in place, most of the monthly effort has gone. What remains is the data assembly — and where the figures come out of a comparison rather than a single ledger, that comparison has to be done first.

A payables number built on an unreconciled vendor ledger, or an input credit figure built on an unreconciled 2B comparison, is a precise number of the wrong thing. Where the pack depends on comparisons, Piloteq Automate is the step that applies the same matching rules every month and records a reason against each difference — so the number that reaches the pack has already been examined once. If the pack is assembled from several files each month, combining multiple Excel files removes that step too.

If you would rather not build this by hand

Getting the numbers settled before they are reported

A pack is only as reliable as the figures that feed it. Where those figures come from a comparison — books against a statement, a return against a register — Piloteq Automate does the matching with the rules you set and records the reason for every difference.

  • ✓Match rules saved and reapplied each period
  • ✓Tolerance, group and duplicate handling
  • ✓Exceptions listed with the reason recorded
  • ✓A consistent comparison, month after month
₹1,499 · Single PC License · 12-month license

See how Piloteq Automate fits into reporting →

Frequently asked questions

What should a monthly MIS report contain?+

The sections management actually makes decisions from: revenue and margin by segment, the profit and loss summary with the month and year-to-date figures, variance against budget and against the same period last year, receivables ageing, payables and cash position, and any operational measure the business is run on. The test is not whether a section is standard — it is whether somebody acts on it.

How do I build an MIS report in Excel so it works every month?+

Separate the workbook into three layers: a data layer holding the ledger extract with one row per entry and nothing else, a calculation layer that turns that into figures by account and period, and a presentation layer that lays the figures out for reading. The month's work then happens in the data layer only, and nothing in the presentation layer is ever retyped.

How should variance be presented when income and expense differ?+

Report variance as favourable or unfavourable rather than as a raw subtraction. Spending more than budget is unfavourable for a cost line and favourable for a revenue line, so a single Actual minus Budget column forces the reader to remember which is which for every row. Add a line-type flag to your chart-of-accounts mapping and let the formula choose the sign.

What is a chart-of-accounts mapping table?+

A two-column table listing every account code in the ledger against the MIS line it belongs to. Every figure in the pack is then produced by looking up the accounts that map to a line, rather than by listing account codes by hand. It is the single change that makes a monthly pack maintainable, because a new ledger account is a new row in the mapping rather than a formula edit in nine places.

Should the MIS pack be one workbook or several?+

One workbook with clearly separated sheets — data, calculation, presentation. Splitting it across files introduces links that break when a file is moved or renamed, and it makes the pack harder to refresh than it needs to be. If the pack must be distributed, distribute a copy with the figures pasted as values and the working file kept separately.

How do I handle last month's figures being restated?+

Keep the reporting period as a column in the data, and note the restatement on the pack rather than editing the previous pack. Editing a pack that has already gone to management means two versions exist with the same title, which is the situation that makes people stop trusting the numbers.

Related guides