Skip to main content
Salary forecasting involves enough moving parts (hire dates, increase cycles, pension rates, employer costs) that it needs its own sheet. A dedicated headcount sheet keeps the complexity contained and the P&L clean.

What approach to use

Driver-based is the right default for headcount. Salary costs are determined by known inputs you control directly: hire dates, salary levels, increase cycles, pension rates. Model them explicitly rather than projecting from history. Use statistical when headcount is stable and salary increases follow a predictable annual pattern. It doesn’t account for changes in the trend. Hardcoded is for discrete, known costs that don’t follow a formula: bonuses, one-off contractor fees, signing bonuses. Not the right fit for recurring salary costs.

Where to forecast headcount

  • Dedicated sheet: right for most cases. Salary data is sensitive, individual costs have multiple components, and a dedicated sheet gives you a single place to model and update across the team. The P&L row references the total.
  • Directly on the P&L: right for simpler cases: a stable team on statistical, or a one-off cost like a bonus hardcoded to a specific month.

Forecasting approaches

Set up the sheet structureCreate a dedicated sheet with two sections: Assumptions at the top and salary totals below.In the Assumptions section, add rows for variables that apply across all employees: salary increase percentage, pension percentage, or any other shared inputs. These become the single inputs that drive calculations across the sheet.A common approach adds a group per employee or role with rows for base salary, pension, and other employer costs. Consider grouping employees into groups for departments.
If you use dimensions, you can break down actuals by department without splitting GL accounts into separate rows. The headcount sheet is primarily a forecasting tool: build your plan at the employee or role level, then reference the totals on the P&L where they sit alongside actuals at the department level.
Enter starting salariesFor each current employee, enter their monthly salary directly on the Salary row. This is the baseline the forecast builds from.Forecast ongoing salariesOn each salary row, reference the prior month and apply the salary increase assumption:
= "Salary"[-1] + ("Salary"[-1] * "Salary increase"[0])
In months where the salary increase assumption is zero, the salary carries forward unchanged. When the assumption fires, the increase is applied automatically.Model salary increasesThe if_month() logic lives on the Salary increase row in the Assumptions section, not on the salary row itself:
= if_month(6) * 3%
This sets the increase to 3% in month 6 and zero in all other months. Adjust the month number and percentage to match your review cycle. Because every salary row references the same assumption, updating it in one place updates every employee automatically.Add pension and employer costsReference the salary row and apply the pension percentage from the Assumptions section:
= "Salary"[0] * "Pension %"[0]
Add a row for other salary-related costs using the same pattern with the relevant percentage.Model new hiresFor a new hire joining mid-year, leave the Salary row empty for months before their start date. Enter their salary directly in the month they join, then apply the ongoing salary formula from the following month forward.
As you move the Forecast Start date forward, periods that were forecast become actuals. Enter actual salary values for those periods on the headcount sheet. Formulas referencing prior months will break if the preceding actuals period is empty. If you don’t have actuals, put the budget numbers into the actuals layer to avoid formulas breaking.